我目前正在学习傅立叶变换并使用Python来解决它。
我在这里有一段代码:
x = np.arange(0,50,0.1)
T = 5
y = np.sin(T*np.pi*x)
freq = np.fft.rfftfreq(x.size)
y_ft = np.fft.rfft(y)
plt.plot(freq, np.abs(y_ft))
它生成如下正确的图表:
我原本以为我会得到一个类似于第一个图表的图表,其中右峰移位,因为我只是放大了周期时间。
为什么增加循环时间会产生如此意外的结果?
答案 0 :(得分:4)
您正在有效地对信号进行采样。使用您的代码,您采样的频率为1 / 0.1或10 rad /秒。第一个正弦曲线的频率恰好在Nyquist frequency(5弧度/秒)。第二个正弦曲线的频率超出奈奎斯特,因此您的信号未被正确采样。解决方案:提高采样频率(例如x = np.arange(0, 50, 0.01)
)。
看看你绘制的T = 10信号是什么样的(你可以看到它在采样点上不像一个正弦曲线):