Python中的數(shù)字信號處理(DSP)模塊可以用來設(shè)計和實現(xiàn)帶通濾波器。 帶通濾波器可以很好地去除噪聲和雜波,同時保留所需信號的特定頻率范圍。
import scipy.signal as signal import numpy as np import matplotlib.pyplot as plt # 設(shè)計一個6階Butterworth帶通濾波器 lowcut = 10 # 低頻截止頻率 highcut = 1000 # 高頻截止頻率 fs = 8000 # 采樣頻率 order = 6 # 階數(shù) nyquist_rate = fs / 2.0 b, a = signal.butter(order, [lowcut/nyquist_rate, highcut/nyquist_rate], btype='bandpass') # 生成一個測試信號 t = np.linspace(0, 1, fs, endpoint=False) x = np.sin(2 * np.pi * 50 * t) + 0.5 * np.sin(2 * np.pi * 2000 * t) # 應(yīng)用濾波器 filtered = signal.filtfilt(b, a, x) # 繪制原始信號和濾波后的信號 plt.plot(t, x, label='Original signal') plt.plot(t, filtered, label='Filtered signal') plt.xlabel('Time (sec)') plt.ylabel('Amplitude') plt.legend() plt.show()
上面的代碼使用scipy庫中的signal模塊來設(shè)計和應(yīng)用一個6階Butterworth帶通濾波器。 該濾波器的低頻截止頻率為10Hz,高頻截止頻率為1000Hz,采樣頻率為8000Hz。 我們生成一個測試信號,并應(yīng)用濾波器來去除其中的雜波和高頻噪聲。 最后,我們使用matplotlib庫中的plt模塊將原始信號和濾波后的信號繪制出來,以便觀察效果。