首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >高斯功率谱的IFFT - Python

高斯功率谱的IFFT - Python
EN

Stack Overflow用户
提问于 2015-03-05 06:05:33
回答 2查看 807关注 0票数 0

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

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

代码语言:javascript
复制
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应包含零频率项,a1:n/2+1应包含正频率项,an/2+1:应包含负频率项,顺序为负频率递减。”)

EN

回答 2

Stack Overflow用户

发布于 2015-03-06 07:01:11

原因是Plancherel theorem,它规定傅立叶变换守恒信号的能量,即|x(t)|²上的积分等于|X(f)|²上的积分。如果你有更多的样本(例如,由更高的采样率或更长的间隔引起),你就有更多的能量。出于这个原因,您的IFFT结果是按N的因子缩放的。您的因素取决于所使用的convention of Fourier Integral,正如@pv已经指出的那样。另一方面,在你的区间的长度上,因为积分超过了采样的幂和连续的区间需要是相同的。

票数 0
EN

Stack Overflow用户

发布于 2015-03-05 06:17:14

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

票数 -1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/28865953

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档