Python-绘制非周期值的傅里叶变换的问题
我在绘制数据系列的傅里叶变换时遇到问题。我测量了一些振荡的东西,我的值是这样的(x轴是时间,10秒,y是某种加速度): 然后我用这个函数做傅里叶变换:Python-绘制非周期值的傅里叶变换的问题,python,fft,Python,Fft,我在绘制数据系列的傅里叶变换时遇到问题。我测量了一些振荡的东西,我的值是这样的(x轴是时间,10秒,y是某种加速度): 然后我用这个函数做傅里叶变换: def plot_magnitude_spectrum(signal, title, sr): ft = np.fft.fft(signal) magnitude_spectrum = np.abs(ft) plt.figure(figsize=(18,5)) frequency = np.linspa
def plot_magnitude_spectrum(signal, title, sr):
ft = np.fft.fft(signal)
magnitude_spectrum = np.abs(ft)
plt.figure(figsize=(18,5))
frequency = np.linspace(0, sr, len(magnitude_spectrum))
plt.plot(frequency, magnitude_spectrum)
plt.xlabel("frequencies")
plt.title(title)
plt.show()
plot_magnitude_spectrum(normes, "normes", 10.5)
信号是我的测量值列表,sr是采样率(我每秒钟有10.5个测量值)。
它给了我这个图表:
我试图找到振荡的频率,但我觉得我做错了。FFT是否执行错误?第一项是常数,表示信号的平均值。因为原始信号的平均值相当大,所以常数项也很大也就不足为奇了。看看吉布斯现象。傅里叶变换隐式地将信号视为周期性的,因此想象一下将信号并排叠加——边界处会有明显的差异,因此在小频率下会有大量的功率。尝试你的代码在一个信号,你理解像一个正弦波,以确保它的工作正常。查看窗口功能,并考虑裁剪您的数据。