本文共 659 字,大约阅读时间需要 2 分钟。
import numpy as npfrom scipy.fftpack import fftimport matplotlib.pyplot as pltfrom matplotlib.pylab import mplmpl.rcParams['font.sans-serif'] = ['SimHei'] #显示中文mpl.rcParams['axes.unicode_minus']=False #显示负号N = 255 #采样点的个数x = np.arange(0,2*np.pi,2*np.pi/N)#长生频率为50、7、100hz的信号y = 7 * np.sin(50*x) + 5.5 * np.sin(7 * x) + 3 * np.sin(100 * x)+10fft_y = fft(y) # 快速傅里叶变换fft_y = fft_y[range(N//2)] #折半,丢掉镜像对称的信号fft_a = np.abs(fft_y) #求复数的模值fft_a = fft_a*2/N #幅值的N/2倍就是对应模值fft_a[0] /= 2 #直流分量的模值为幅值的N倍w = np.arange(0,N//2,1) #频率分辨率=采样率/采样点的个数,但这里做了折半处理plt.figure()plt.title("时域波形")plt.plot(x,y)plt.figure()plt.title("频域波形")plt.plot(w,fft_a)plt.show()
效果图:
转载地址:http://lgxgz.baihongyu.com/