0

我想计算高斯功率谱的傅里叶逆变换,从而再次获得高斯。我想用这个事实来检查我的高斯功率谱的 IFFT 是否合理,因为它产生了一组以高斯方式有效分布的数据。现在,事实证明,IFFT 必须乘以因子 2*pi*N,其中 N 是数组的维数,才能恢复解析相关函数(即功率谱的傅里叶逆变换)。有人可以解释为什么吗?

这是一段代码,它首先用高斯功率谱填充数组,然后对功率谱进行 IFFT。

power_spectrum_k = np.zeros(n, float)
for k in range(1, int(n/2+1)):
    power_spectrum_k[k] = math.exp(-(2*math.pi*k*sigma/n)*(2*math.pi*k*sigma/n))

for k in range(int(n/2+1), n):
    power_spectrum_k[k] = power_spectrum_k[int(k - n/2)]

inverse_transform2 = np.zeros(n, float)
inverse_transform2 = np.fft.ifft(power_spectrum_k)

其中功率谱的对称性来自需要获得真正的相关函数,同时遵循使用 numpy.ifft 的规则(引用自文档:

“输入的排序方式应与 fft 返回的方式相同,即 a[0] 应包含零频率项,a[1:n/2+1] 应包含正频率项,而 a[ n/2+1:] 应该包含负频率项,按负频率递减的顺序”。)

4

2 回答 2

0

原因是Plancherel 定理,它指出傅里叶变换保存了信号的能量,即|x(t)|²上的积分等于|X(f)|²上的积分。如果你有更多的样本(例如,由更高的采样率或更长的间隔引起),你就有更多的能量。因此,您的 IFFT 结果按N. 正如@pv 已经指出的那样,您的因素取决于所使用的傅里叶积分的约定。另一方面,在您的区间长度上,因为对采样和连续区间的幂的积分需要相同。

于 2015-03-05T23:01:11.360 回答
-1

我建议将现有库用于 fft。不是特别困难,但有一些优化良好的解决方案。试试 scipy http://docs.scipy.org/doc/scipy/reference/fftpack.html或我最喜欢的fftw https://hgomersall.github.io/pyFFTW/

于 2015-03-04T22:17:13.953 回答