fff*_*fff 4 python idl fft scipy idl-programming-language
我将一些简单的IDL代码传递给Python.但是,从SciPy/NumPy包中返回的FFT值与IDL包不同,我无法找到原因.
这一切减少到8种元素的一个简单的例子,我发现,SciPy的/ NumPy的例程返回比IDL那些(归一化的问题,我想)更大8(2 ^ 3)倍的值.
以下是两种语言的示例代码(从此处复制):
signal = ([-2., 8., -6., 4., 1., 0., 3., 5.])
fourier = fft(signal)
print, fourier
Run Code Online (Sandbox Code Playgroud)
回报
(1.62500,0.00000)(0.420495,0.506282)(0.250000,0.125000)(-1.17050,-1.74372)(-2.62500,-0.00000)(-1.17050,1.74372)(0.250000,-0.125000)(0.420495,-0.506282)
from scipy.fftpack import fft
import numpy as N
…
signal = N.array([-2., 8., -6., 4., 1., 0., 3., 5.])
fourier = fft(signal)
print fourier
Run Code Online (Sandbox Code Playgroud)
回报
[13. + 0.j,3.36396103 + 4.05025253j,2.+ 1.j,-9.36396103-13.94974747j,-21.+ 0.j,-9.36396103 + 13.94974747j,2.-1.j,3.36396103 -4.05025253j]
我用NumPy包做到了,得到了相同的结果.我也试过print fft(signal, 8 )以防万一,但它返回了同样的,如预期的那样.
然而,并非所有,回到我真正的256个元素阵列,我发现差异不再是8或256,而是256*8!这只是疯了.
虽然我解决了这个问题,但我需要知道为什么会有这种差异.
解决了:这只是规范化,在某些时候我将IDL 256阵列分成8倍,我忘了删除.在Dougal的回答中,有我错过的文档.
IDL和numpy使用稍微不同的DFT定义.Numpy是(来自文档):
http://docs.scipy.org/doc/numpy/_images/math/dd1819fee3d9660e590d152f0c7cb7aa0c441ff1.png
http://docs.scipy.org/doc/numpy/_images/math/6bbd972502306a4225d33ac6919fc6fc8244f67d.png
虽然IDL是(从这里):
http://www.physics.nyu.edu/grierlab/idl_html_help/images/Fa8.gif
Numpy m和IDL一样x,k是u,n是N.我想a_m和f(x)有同样的事情为好.因此,因素1/N是明显的差异,解释了8-elt案例中8的差异.
对于256-elt的情况,我不确定256*8的一个; 你可以发布原始阵列和两个输出吗?(这是否适用于所有256-elt阵列?其他尺寸怎么样?我没有IDL ....)
| 归档时间: |
|
| 查看次数: |
1367 次 |
| 最近记录: |