对称频谱的 iFFT
我在对称频谱上执行 iFFT(使用 Python)。为什么结果不是实值信号而是包含复值?
# My symmetric spectrum
spectrum = numpy.array( [1+1j,2+2j,3+3j,3-3j,2-2j] )
# Perform the iFFT
print numpy.fft.ifft(spectrum)
输出:
(2.2+0.2j)
(-1.98979431354+0.2j)
(0.59464641547+0.2j)
(-0.74743281997+0.2j)
(0.942580718037+0.2j)
I perform the iFFT on a symmetric spectrum (using Python). Why is the result not an real-valued signal but contains complex values?
# My symmetric spectrum
spectrum = numpy.array( [1+1j,2+2j,3+3j,3-3j,2-2j] )
# Perform the iFFT
print numpy.fft.ifft(spectrum)
Output:
(2.2+0.2j)
(-1.98979431354+0.2j)
(0.59464641547+0.2j)
(-0.74743281997+0.2j)
(0.942580718037+0.2j)
如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。
绑定邮箱获取回复消息
由于您还没有绑定你的真实邮箱,如果其他用户或者作者回复了您的评论,将不能在第一时间通知您!
发布评论
评论(1)
试试这样:
通常 bin 0 是 DC,bin N/2 是奈奎斯特,并且这两个值都是实数。对于其他项,对称性是围绕奈奎斯特的复共轭。
使用 Octave(MATLAB 克隆),我得到的结果与您的原始输入数据相同:
而使用上面的输入数据,我得到纯粹真实的结果:
我假设 numpy 可能使用相同的约定来排序 FFT/IFFT 输入/输出数据。
Try it like this:
Normally bin 0 is DC, bin N/2 is Nyquist, and both of these values are real. For the other terms the symmetry is complex conjugate around Nyquist.
With Octave (MATLAB clone) I get the same result as you for your original input data:
whereas with my input data above I get a purely real result:
I assume that numpy probably uses the same comnventions for ordering FFT/IFFT input/output data.