首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >对称谱的iFFT

对称谱的iFFT
EN

Stack Overflow用户
提问于 2012-01-30 18:24:25
回答 1查看 2.7K关注 0票数 4

我在对称频谱上执行iFFT (使用Python)。为什么结果不是实值信号,而是包含复数值?

代码语言:javascript
复制
# My symmetric spectrum
spectrum = numpy.array( [1+1j,2+2j,3+3j,3-3j,2-2j] )

# Perform the iFFT
print numpy.fft.ifft(spectrum)

输出:

代码语言:javascript
复制
(2.2+0.2j)
(-1.98979431354+0.2j)
(0.59464641547+0.2j)
(-0.74743281997+0.2j)
(0.942580718037+0.2j)
EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2012-01-30 19:02:43

像这样试一下:

代码语言:javascript
复制
# My symmetric spectrum
spectrum = numpy.array( [0+0j,1+1j,2+2j,3+3j,0+0j,3-3j,2-2j,1-1j] )

# Perform the iFFT
print numpy.fft.ifft(spectrum)

通常,bin 0是DC,bin N/2是Nyquist,并且这两个值都是实数。对于其他项,对称是Nyquist周围的复共轭。

使用Octave (MATLAB克隆),对于原始输入数据,我会得到与您相同的结果:

代码语言:javascript
复制
octave-3.4.0:1> x = [1+1j,2+2j,3+3j,3-3j,2-2j];
octave-3.4.0:2> y = ifft(x)
y =

   2.20000 + 0.20000i  -1.98979 + 0.20000i   0.59465 + 0.20000i  -0.74743 + 0.20000i   0.94258 + 0.20000i

然而,使用上面的输入数据,我得到了一个纯粹真实的结果:

代码语言:javascript
复制
octave-3.4.0:3> x = [0+0j,1+1j,2+2j,3+3j,0+0j,3-3j,2-2j,1-1j];
octave-3.4.0:4> y = ifft(x)
y =

   1.50000  -1.56066   0.00000   0.14645  -0.50000   0.56066  -1.00000   0.85355

我假设numpy可能使用相同的方法对FFT/IFFT输入/输出数据进行排序。

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

https://stackoverflow.com/questions/9062387

复制
相关文章

相似问题

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