如何从fft函数获取频率轴?

如何从fft函数获取频率轴?,第1张

如何从fft函数获取频率轴?

这是一个例子。

首先创建一个具有预定采样间隔的正弦波。我们将结合两个频率为20和40的正弦波。请记住,如果时间间隔较大,则高频可能会混叠。

#import the necessary packagesfrom scipy import fftpackimport matplotlib.pyplot as pltimport numpy as np# sampling freq in herts 20Hz, and 40Hzfreq_sampling1 = 10freq_sampling2 = 20amplitude1 = 2 # amplitude of first sine waveamplitude2 = 4 # amplitude of second sine wavetime = np.linspace(0, 6, 500, endpoint=True) # time range with total samples of 500 from 0 to 6 with time interval equals 6/500y = amplitude1*np.sin(2*np.pi*freq_sampling1*time) + amplitude2*np.sin(2*np.pi*freq_sampling2*time)plt.figure(figsize=(10, 4))plt.plot(time,y, 'k', lw=0.8)plt.xlim(0,6)plt.show()

注意图中的两个正弦波是叠加的。与频率一。10和振幅2,另一个具有频率。20和振幅4。

# apply fft functionyf = fftpack.fft(y, time.size)amp = np.abs(yf) # get amplitude spectrum freq = np.linspace(0.0, 1.0/(2.0*(6/500)), time.size//2) # get freq axis# plot the amp spectrumplt.figure(figsize=(10,6))plt.plot(freq, (2/amp.size)*amp[0:amp.size//2])plt.show()

注意,在幅度频谱中,两个频率被恢复,而在其他频率处,幅度为零。振幅值也分别为2和4。

您可以改为使用 tom10*

fftpack.fftfreq
建议的获得频率轴。 因此,代码更改为 *

yf = fftpack.fft(y, time.size)amp = np.abs(yf) # get amplitude spectrum freq = fftpack.fftfreq(time.size, 6/500)plt.figure(figsize=(10,6))plt.plot(freq[0:freq.size//2], (2/amp.size)*amp[0:amp.size//2])plt.show()

我们只画了振幅谱的正部分

[0:amp.size//2]



欢迎分享,转载请注明来源:内存溢出

原文地址: http://outofmemory.cn/zaji/5648187.html

(0)
打赏 微信扫一扫 微信扫一扫 支付宝扫一扫 支付宝扫一扫
上一篇 2022-12-16
下一篇 2022-12-16

发表评论

登录后才能评论

评论列表(0条)

保存