【发布时间】:2019-03-23 19:42:53
【问题描述】:
我正在 Python 上启动 DSP,但遇到了一些困难: 我正在尝试定义频率为 1000Hz 的正弦波
我尝试使用以下代码进行 FFT 并找到它的频率:
import numpy as np
import matplotlib.pyplot as plt
sampling_rate = int(10e3)
n = int(10e3)
sine_wave = [100*np.sin(2 * np.pi * 1000 * x/sampling_rate) for x in range(0, n)]
s = np.array(sine_wave)
print(s)
plt.plot(s[:200])
plt.show()
s_fft = np.fft.fft(s)
frequencies = np.abs(s_fft)
plt.plot(frequencies)
plt.show()
所以第一个情节对我来说很有意义。 第二个图 (FFT) 显示了两个频率: i) 1000Hz,这是我在开始时设置的 ii) 9000Hz,出乎意料 freqeuncy domain
【问题讨论】:
-
对不起,我误解了部分问题。我会删除那条评论。
-
您的采样率为 10000,因此 Nyquist frequency 为 5000。这是离散样本中可能出现的最高频率。你所说的9000赫兹实际上是-1000赫兹。您可以使用
numpy.fft.fftfreq查找与numpy.fft.fft返回的傅立叶系数相关的频率,例如numpy.fft.fftfreq(len(s_fft), d=1/sampling_rate).
标签: python numpy signal-processing