Python作為一種高級編程語言,擁有豐富的庫函數和工具,其中之一就是成形濾波器。
# 導入庫 import numpy as np import matplotlib.pyplot as plt from scipy.signal import butter, filtfilt # 設定采樣頻率和信號 fs = 1000 # 采樣頻率 fc = 50 # 截止頻率 t = np.arange(0, 1, 1/fs) signal = np.sin(2 * np.pi * 10 * t) + np.sin(2 * np.pi * 100 * t) # 設計濾波器 order = 4 wn = 2 * fc / fs b, a = butter(order, wn, 'highpass') # 濾波信號 filtered_signal = filtfilt(b, a, signal) # 繪制信號和濾波后的信號頻譜 plt.subplot(2, 1, 1) plt.plot(t, signal) plt.title('Original Signal') plt.xlabel('Time (s)') plt.ylabel('Amplitude') plt.subplot(2, 1, 2) freq = np.fft.rfftfreq(len(t), d=1/fs) fft_signal = np.fft.rfft(signal) fft_filtered = np.fft.rfft(filtered_signal) plt.plot(freq, np.abs(fft_signal), label='Original') plt.plot(freq, np.abs(fft_filtered), label='Filtered') plt.title('Frequency Spectrum') plt.xlabel('Frequency (Hz)') plt.ylabel('Amplitude') plt.legend() plt.show()
以上代碼中,numpy庫和matplotlib庫被用于信號生成和圖像繪制;scipy.signal庫中的butter和filtfilt函數分別用于生成濾波器和濾波信號。
在設計濾波器時,需要設定濾波器的階數和截止頻率,本例中使用了4階高通濾波器,截止頻率為50Hz。
最后通過繪制信號時頻圖,我們可以清晰地看到,通過成形濾波器的處理,原信號中的低頻分量被濾除,保留了高頻分量。
上一篇python 怎么裝庫
下一篇vue api 緩存