pyFFTW是否允许保留输入数组

时间:2016-05-30 16:11:20

标签: python python-3.x fft fftw pyfftw

我想知道是否有可能在正向r2c变换期间强制执行 pyFFTW (FFTW包装)输入向量

至少在原始FFTW 中, FFTW_PRESERVE_INPUT 似乎是默认选项(请查看算法限制标记:http://www.fftw.org/doc/Planner-Flags.html

使用pyFFTW FFTW .__调用__(),可以传递多个标志,但此处仅列出' FFTW_DESTROY_INPUT' :{{ 3}}

可能这不仅仅是在文档中失效,因为在源代码中,文件 builders / builders.py 中有一个有点可怕的声明(第166行):< / p>

  

overwrite_input:输入数组是否可以     在改造期间被覆盖。

此外,在函数 _Xfftn 的定义中 builders / _utils.py 文件中的代码中,只存在destory标志: if overwrite_input: flags.append('FFTW_DESTROY_INPUT')

最终的问题是:知道FFTW_PRESERVE_INPUT不能通过pyFFTW传递,我至少可以依靠原始FFTW中的事实 这个标志FFTW_PRESERVE_INPUT是默认的吗?回想一下上面引用的评论:&#34;输入数组是否可以被覆盖&#34; 是作者 pyFFTW包装器知道更多,默认FFTW_PRESERVE_INPUT不起作用?

$ rpm -q fftw fftw-3.3.4-6.fc23.x86_64

>>> pyfftw.__version__ '0.10.1

1 个答案:

答案 0 :(得分:1)

是的,除非明确请求,否则将使用所有默认值 - 这意味着除非您请求DESTROY_INPUT,否则PRESERVE_INPUT是隐含的,除了,如果您有多维c2r变换,在这种情况下,输入将被销毁(这在您链接到的文档的Schemes部分以及您链接到的FFTW文档中有记录。)

如果您发现输入被破坏且未明确请求输入或不是上述变换之一的情况,则此错误应报告。

interfaces代码制作各种副本,以确保在必要时保留变换。

我的回忆是计划阶段对保护数组更加宽松 - 保护数组的最简单方法是使用builders接口,除非另有明确建议,否则将始终存储原始数组并将其复制回来英寸