我想知道是否有可能强制执行pyFFTW (FFTW的包装器),即在前向r2c转换期间保存的输入向量。
至少在最初的FFTW FFTW_PRESERVE_INPUT中,FFTW_PRESERVE_INPUT似乎是一个默认选项(请看这里的算法限制标志:http://www.fftw.org/doc/Planner-Flags.html )。
使用pyFFTW的FFTW.__call__(),可以传递几个标志,但这里只列出了'FFTW_DESTROY_INPUT':http://hgomersall.github.io/pyFFTW/pyfftw/pyfftw.html#pyfftw.FFTW
也许,这不仅仅是文档中的错误,因为在源代码中,在文件构建器/builders.py中有一个有点可怕的语句(第166行):
overwrite_input:在转换过程中是否可以覆盖输入数组。
在函数_Xfftn的定义中的文件生成器/_utils.py中的代码中,只有destory标志存在:if overwrite_input: flags.append('FFTW_DESTROY_INPUT')
的最终问题是:知道FFTW_PRESERVE_INPUT不能与pyFFTW一起传递,我能至少依赖这样一个事实:在最初的FFTW中,这个标志FFTW_PRESERVE_INPUT是默认的吗?回想一下上面引用的评论:“输入数组是否可以被覆盖” pyFFTW包装器的作者是否知道更多的东西,而默认的FFTW_PRESERVE_INPUT将无法工作?
$ rpm -q fftw fftw-3.3.4-6.fc23.x86_64
>>> pyfftw.__version__ '0.10.1
发布于 2016-05-31 08:50:24
是的,除非明确请求,否则将使用所有默认值--这意味着除非您请求DESTROY_INPUT,否则PRESERVE_INPUT是隐式的,除非您有多维c2r转换,在这种情况下,输入将被销毁(这将记录在您链接到的文档的Schemes部分以及您链接到的FFTW文档中)。
如果您发现输入被销毁,或者不是显式请求,或者不是上述转换之一,这是一个错误,应该报告。
interfaces代码生成各种副本,以确保在必要时保留转换。
我记得,关于保护数组的规划阶段要宽松得多--保护数组的最简单方法是使用builders接口,除非明确建议,否则它总是存储原始数组并将其复制回。
https://stackoverflow.com/questions/37529935
复制相似问题