matlab fft 频率轴,如何从fft函数求频率轴?
这里有一个例子。在首先用预先确定的采样间隔创建一个正弦波。我们将组合频率为20和40的两个正弦波。记住,如果时间间隔很长,高频可能会出现混叠。在#Import the necessary packagesfrom scipy import fftpackimport matplotlib.pyplot as pltimport numpy as np# sampling freq in herts
这里有一个例子。在
首先用预先确定的采样间隔创建一个正弦波。我们将组合频率为20和40的两个正弦波。记住,如果时间间隔很长,高频可能会出现混叠。在#Import the necessary packages
from scipy import fftpack
import matplotlib.pyplot as plt
import numpy as np
# sampling freq in herts 20Hz, and 40Hz
freq_sampling1 = 10
freq_sampling2 = 20
amplitude1 = 2 # amplitude of first sine wave
amplitude2 = 4 # amplitude of second sine wave
time = np.linspace(0, 6, 500, endpoint=True) # time range with total samples of 500 from 0 to 6 with time interval equals 6/500
y = 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。在
^{pr2}$

注意,在振幅谱中,当其他频率的振幅为零时,这两个频率被恢复。振幅值也分别为2和4。在
您可以使用fftpack.fftfreq来获得频率轴,如tom10所建议的那样
因此,代码更改为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]
魔乐社区(Modelers.cn) 是一个中立、公益的人工智能社区,提供人工智能工具、模型、数据的托管、展示与应用协同服务,为人工智能开发及爱好者搭建开放的学习交流平台。社区通过理事会方式运作,由全产业链共同建设、共同运营、共同享有,推动国产AI生态繁荣发展。
更多推荐


所有评论(0)