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


它将生成正确的图表,如下所示:

python - numpy傅立叶变换产生意外结果-LMLPHP

但是当我将T更改为10时,图表如下所示:
python - numpy傅立叶变换产生意外结果-LMLPHP

我期望我会得到与第一个类似的图表,其中的峰向右移动,因为我只是延长了循环时间。

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

最佳答案

您正在有效地采样信号。使用您的代码,您采样的频率为1 / 0.1或10 rad / second。第一个正弦波的频率仅为Nyquist frequency(5 rad /秒)。第二个正弦波的频率超过了奈奎斯特,因此无法正确采样信号。解决方案:提高采样频率(例如x = np.arange(0, 50, 0.01))。

查看绘制时T = 10信号的样子(您可以看到它在采样点上不像单个正弦波):

python - numpy傅立叶变换产生意外结果-LMLPHP

关于python - numpy傅立叶变换产生意外结果,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/31601865/

10-12 17:02