一、巴特沃斯高通濾波器簡介
巴特沃斯高通濾波器是數字信號處理中常用的一種濾波器。它是一類遞歸濾波器,採用了完整的極點零點布局。
這種濾波器對於頻率大於一定值的信號,會進行濾波並將它們傳遞出去。如果信號的頻率小於該值,則信號將被過濾掉。由於其在頻域中具有平坦的特性,所以在設計帶通、帶阻濾波器時很有用。
巴特沃斯高通濾波器最大的特點是其在截止頻率附近的幅值響應是非常陡峭的。但是,由於它是遞歸濾波器,所以在實現時需要注意其時間和空間複雜度。
二、巴特沃斯高通濾波器優缺點
優點:
- 巴特沃斯高通濾波器對於信號頻率大於一定值的信號,具有非常好的響應特性。
- 在設計帶通和帶阻濾波器時,巴特沃斯高通濾波器很好地發揮了自己的作用。
缺點:
- 由於其是遞歸濾波器,所以實現時需要注意空間和時間複雜度。
- 在截止頻率附近的幅度響應具有非常陡峭的特性,可能會導致一些相位失真的情況。
三、巴特沃斯低通濾波器
巴特沃斯濾波器具有非常好的通帶特性和截止頻率附近的幅度響應特性。因此,其在數字信號處理中有廣泛應用。其中,巴特沃斯低通濾波器也是比較常用的一種濾波器。
巴特沃斯低通濾波器的傳遞函數為:
b0 + b1*z^-1 + b2*z^-2 + b3*z^-3 + b4*z^-4 H(z) = -------------------------------------------- a0 + a1*z^-1 + a2*z^-2 + a3*z^-3 + a4*z^-4
其中,a和b分別為濾波器的係數。對於一階的巴特沃斯低通濾波器來說,其係數如下所示:
b1 = b0 = (1 - cos(wc))/2 b2 = 1 - cos(wc) b3 = (1 - cos(wc))/2 a1 = -2*cos(wc) a2 = 2 - 2*cos(wc)
其中,wc為濾波器的截止頻率。在巴特沃斯濾波器中,為了使得濾波器系統具有理想的特性,一般都會採用一組歸一化的數字截止頻率。如果我們將數字截止頻率設為π,則可以得到:
b1 = b0 = 0.2929 b2 = 0.5858 b3 = 0.2929 a1 = -1.4142 a2 = 0.5858
四、巴特沃斯高通濾波器python代碼
使用Python實現巴特沃斯高通濾波器的代碼如下:
import scipy.signal as signal # 設計巴特沃斯高通濾波器 b, a = signal.butter(N, Wn, 'high') # 使用巴特沃斯高通濾波器濾波 filtered_signal = signal.filtfilt(b, a, input_signal)
五、巴特沃斯高通濾波器傳遞函數
巴特沃斯高通濾波器的傳遞函數與巴特沃斯低通濾波器的傳遞函數類似。其傳遞函數為:
b0*z^n + b1*z^(n-1) + ... + bn H(z) = ------------------------------ a0*z^n + a1*z^(n-1) + ... + an
其中,n為濾波器的階數,a和b為濾波器的係數。對於一階的巴特沃斯高通濾波器來說,其係數如下所示:
b1 = -b0 = (1 + cos(wc))/2 a1 = -2*cos(wc)
其中,wc為濾波器的截止頻率。如果我們將數字截止頻率設為π,則可以得到:
b1 = -b0 = -0.2929 a1 = -1.4142
六、四階巴特沃斯低通濾波器
四階的巴特沃斯低通濾波器與一階的類似,只是將一階的傳遞函數進行了平方。其傳遞函數為:
b0^2*z^4 + b1^2*z^3 + b2^2*z^2 + b3^2*z + b4^2 H(z) = ----------------------------------------------------------- a0*z^4 + a1*z^3 + a2*z^2 + a3*z + a4
其係數如下所示:
b0 = 0.0965 b1 = 0.3857 b2 = 0.5785 b3 = 0.3857 b4 = 0.0965 a1 = -0.4684 a2 = 1.4670 a3 = -1.9319 a4 = 1.1163
七、四階巴特沃斯濾波器
四階的巴特沃斯濾波器可以分為兩個一階的巴特沃斯濾波器的乘積。因此,其傳遞函數為兩個一階巴特沃斯濾波器的傳遞函數的乘積。
一個一階巴特沃斯濾波器的傳遞函數為:
b1*z + b0 H1(z) = ---------- a1*z + a0
其係數為:
b1 = b0 = (1 - sin(wc))/(2*sqrt(cos(wc))) a1 = -cos(wc) a0 = 1 + a1
如果我們將數字截止頻率設為π,則可以得到:
b1 = b0 = 0.7654 a1 = -0.8478 a0 = 1.5974
因此,四階巴特沃斯濾波器的傳遞函數為:
b1^2*b2*z^4 + b0^2*b2*z^3 + b1^2*z^2 + 2*b0*b1*b2*z + b0^2*z^0 H4(z) = ----------------------------------------------------------------------- a1^2*a2*z^4 + a0^2*a2*z^3 + a1^2*z^2 + 2*a0*a1*a2*z + a0^2*z^0
其係數如下所示:
b0 = 0.5352 b1 = 2.1408 b2 = 3.2112 a1 = -2.3845 a2 = 0.8612 a0 = 1.0000
八、巴特沃斯濾波器matlab代碼
使用MATLAB實現巴特沃斯高通濾波器的代碼如下:
% 設計巴特沃斯高通濾波器 [b, a] = butter(N, Wn, 'high'); % 使用巴特沃斯高通濾波器濾波 filtered_signal = filtfilt(b, a, input_signal);
九、巴特沃斯高通濾波器截止頻率
巴特沃斯高通濾波器的截止頻率是非常重要的參數。它決定了該濾波器在對輸入信號進行濾波時,需要濾掉哪些頻率的信號。
一般來說,巴特沃斯濾波器的截止頻率是歸一化的數字截止頻率,即截止頻率除以採樣頻率的一半。可以使用下面的公式將數字截止頻率轉化為實際截止頻率:
Wc = Wn/(Fs/2)
其中,Wn為數字截止頻率,Fs為採樣頻率。
十、巴特沃斯高通濾波器代碼
下面是一段Python代碼,用於實現巴特沃斯高通濾波器:
import scipy.signal as signal # 設計巴特沃斯高通濾波器 N = 4 # 濾波器階數 Wn = 0.5 # 歸一化數字截止頻率 b, a = signal.butter(N, Wn, 'high') # 使用巴特沃斯高通濾波器濾波 filtered_signal = signal.filtfilt(b, a, input_signal)
原創文章,作者:小藍,如若轉載,請註明出處:https://www.506064.com/zh-hant/n/300825.html