numpy傅里叶变换产生了意想不到的结果

时间:2015-07-24 03:48:52

标签: python numpy matplotlib signal-processing fft

我目前正在学习傅立叶变换并使用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))

它生成如下正确的图表:

enter image description here

但是当我将T改为10时,图表是这样的: enter image description here

我原本以为我会得到一个类似于第一个图表的图表,其中右峰移位,因为我只是放大了周期时间。

为什么增加循环时间会产生如此意外的结果?

1 个答案:

答案 0 :(得分:4)

您正在有效地对信号进行采样。使用您的代码,您采样的频率为1 / 0.1或10 rad /秒。第一个正弦曲线的频率恰好在Nyquist frequency(5弧度/秒)。第二个正弦曲线的频率超出奈奎斯特,因此您的信号未被正确采样。解决方案:提高采样频率(例如x = np.arange(0, 50, 0.01))。

看看你绘制的T = 10信号是什么样的(你可以看到它在采样点上不像一个正弦曲线):

enter image description here