更新时间:2022-08-25 18:18
当带阻滤波器的阻带很窄时, 被称为陷波滤波器 , 又称点阻滤波器。一个理想点阻滤波器的频率响应是要在消除的信号频率点, 其值等于零;而在其他频率处, 其值不为零, 且要等于1。
理想的陷波滤波器的频率响应式为
理想的陷波滤波器的幅频特性如图1所示。
简单的(二阶)陷波滤波器是RLC串联电路,这个电路滤除的频率可以通过这个公式计算:。
陷波滤波器的设计是以模拟滤波器为原型, 通过一定变换转换为数字滤波器。陷波滤波器的设计方法有2 种:
(1)依托模拟低通为设计原型, 利用模拟频率带阻变换法, 再利用双线性变换法将前面所设计的带阻滤波器数字化;
(2)在频域进行直接设计的z 平面零极点法。
比如, 在20Hz 正弦波中人为加入了50Hz 的干扰, 通过陷波滤波器, 滤波后得到的波形基本上滤去了干扰, 如图3 的滤波器效果对照图所示。在医学上心电图使用的频率较高, 假设心电波形受到60Hz 严重干扰, 可经25Hz 低通滤波和50Hz 陷波滤波器滤波后得到的清晰的波形。
如图2的滤波器效果对照图所示。
下面给出理想陷波滤波器的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]);