【问题标题】:numpy Fourier transformation produces unexpected resultsnumpy傅立叶变换产生意想不到的结果
【发布时间】:2015-10-14 14:45:19
【问题描述】:

我目前正在学习傅立叶变换并使用 Python 来玩弄它。

我这里有一个代码 sn-p:

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))

它会生成如下正确的图表:

但是当我把 T 改成 10 时,图表是这样的:

我原以为我会得到与第一个相似的图表,但峰值右移,因为我只是扩大了周期时间。

为什么增加周期时间会产生如此意想不到的结果?

【问题讨论】:

  • 顺便说一句,当您将 T 从 5 更改为 10 时,您谈到“增加循环时间”。如果您的意思是设置正弦曲线的周期,正确的公式应该是 y = np.sin(2*np.pi/T*x) .
  • 谢谢,没想到我居然增加了频率!

标签: python numpy matplotlib signal-processing fft


【解决方案1】:

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

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

【讨论】:

  • 感谢您的专业解释。由于我没有任何信号处理方面的背景知识,因此您给了我不同的见解来解释这个结果。
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2022-01-17
  • 1970-01-01
相关资源
最近更新 更多