python中对序列FFT后结果不是共轭对称的问题
我对雷克子波进行了fft后,发现结果并不是共轭对称的。
这导致我把fft后结果取前一半区间,然后共轭对称到后一半,再反变换回去的结果就有点异常了。如果直接把fft后的全序列做ifft,结果就是对的。
第一张图是fft后,把前一半区间取共轭对称,再和后一半区间相减,可以看到误差还是挺大的,而且越到后面越大。
我在别的论坛看到有人用matlab也遇到过这个问题。
请问这是什么原因?
附上代码:
import numpy as np
from scipy import fft, ifft
import matplotlib.pyplot as plt
import math
f = 50
t = np.arange(-0.512, 0.512, 0.001)
n = int(len(t)/2)
rick = (1 - 2 * (math.pi * f * t)**2) * math.e ** (-1 * (math.pi * f * t)**2)
yy = fft(rick)
y1 = yy[: n]
y2 = np.conj(y1)[:: -1]
y3 = yy[n:]
yyy = np.append(y1, y2)
plt.plot(ifft(yy))
plt.plot(ifft(yyy))
plt.show()
plt.plot(y2-y3)
plt.show()
误差。
直接反变换和共轭对称后再反变换的结果。