Python畫頻率譜是很常見的需求。Python提供了幾個常用的庫,可以輕松地處理頻域信息。下面介紹一些常用的方法。
import numpy as np import matplotlib.pyplot as plt # 生成信號及采樣頻率 Fs = 1000 # 采樣頻率 T = 1/Fs # 采樣周期 L = 1000 # 采樣點數 t = np.arange(L)*T # 時間序列 f1 = 50 # 信號頻率 f2 = 120 # 信號頻率 S = 0.7*np.sin(2*np.pi*f1*t) + np.sin(2*np.pi*f2*t) # 生成信號 # FFT計算 Y = np.fft.fft(S) # 傅里葉變換 P2 = np.abs(Y/L) # 取模 P1 = P2[range(int(L/2))] # 取一半 P1[1:-1] *= 2 # 單邊頻譜 # 畫圖 f = Fs*np.arange(int(L/2))/L # 頻率序列 plt.plot(f,P1) plt.title('Frequency Spectrum') plt.xlabel('Frequency [Hz]') plt.ylabel('Amplitude') plt.show()
代碼中,我們生成了一個信號,包含兩個頻率成分。之后我們使用FFT計算信號的傅里葉變換,得到頻譜信息。最后使用Matplotlib庫畫出頻率譜圖。
使用Python畫頻率譜很方便,只需要掌握幾個基本的庫函數即可。值得一提的是,在涉及到傅里葉變換時,我們需要特別注意信號的采樣頻率和采樣點數,這會影響最終得到的頻率分辨率。