陷波濾波器

陷波濾波器

陷波濾波器指的是一種可以在某一個頻率點迅速衰減輸入信號,以達到阻礙此頻率信號通過的濾波效果。陷波濾波器屬於帶阻濾波器的一種,只是他的阻帶非常狹窄,它的階數必須是二階(含二階)以上。

定義


帶阻濾波器的阻帶很窄時,被稱為陷波濾波器,又稱點阻濾波器。一個理想點阻濾波器的頻率響應是要在消除的信號頻率點,其值等於零;而在其他頻率處,其值不為零,且要等於1。
理想的陷波濾波器的頻率響應式為
 陷波濾波器的幅頻特性
 陷波濾波器的幅頻特性
陷波濾波器
陷波濾波器
理想的陷波濾波器的幅頻特性如圖所示。
陷波濾波器
陷波濾波器
陷波濾波器
陷波濾波器
簡單的(二階)陷波濾波器是RLC串聯電路,這個電路濾除的頻率可以通過這個公式計算: 。

設計方法


陷波濾波器的設計是以模擬濾波器為原型,通過一定變換轉換為數字濾波器。陷波濾波器的設計方法有2 種:
(1)依託模擬低通為設計原型,利用模擬頻率帶阻變換法,再利用雙線性變換法將前面所設計的帶阻濾波器數字化;
數字式陷波濾波器原理圖
數字式陷波濾波器原理圖
(2)在頻域進行直接設計的z 平面零極點法。

應用


比如,在20Hz 正弦波中人為加入了50Hz 的干擾,通過陷波濾波器,濾波后得到的波形基本上濾去了干擾,如圖3 的濾波器效果對照圖所示。在醫學上心電圖使用的頻率較高,假設心電波形受到60Hz 嚴重干擾,可經25Hz 低通濾波和50Hz 陷波濾波器濾波后得到的清晰的波形。
濾波器效果
濾波器效果
如圖的濾波器效果對照圖所示。

matlab實現


下面給出理想陷波濾波器的MATLAB代碼實現:
% Matlab code for plotting the frequency response of digital notch filter
% Implemented as all pass filter section
clear; close all
fs = 1e6;
fn = 200e3;
fb = 50e3;
omega0T =fn/(fs/2)*pi;
deltaT = fb/(fs/2)*pi;
a2 = (1-tan(deltaT/2))./(1+tan(deltaT/2));
a1 = (1+a2).*cos(omega0T);
B = [1 -a1 a2];
A = [a2 -a1 1];
[H1 W1] = freqz(B,A,1024,'whole');
[H2 W2] = freqz(1,1,1024,'whole');
H3 = (H1+H2)/2;
h = figure(1);
subplot(2,1,1);
plot([-512:511]/1024*fs/1e6,20*log10(fftshift(abs(H3))),'b-','LineWidth',4);
grid on; ylabel('amplitude, dB');
title('notch filter, fs=1MHz, fn=200kHz, fb=50kHz');
axis([-0.5 0.5 -50 10]);
subplot(2,1,2);
plot([-512:511]/1024*fs/1e6,(fftshift(angle(H3)*180/pi)),'m-','LineWidth',4);
grid on; xlabel('freq, MHz'); ylabel('angle, deg');
title('phase response');
axis([-0.5 0.5 -180 180]);