指输入输出均为数字信号,通过一定的运算关系改变输入信号所含频率成分的相对比例或者滤除某些频率成分的器件。
因为数字滤波器通过数值运算实现滤波,所以数字滤波器具有如下优点:精度高、稳定、体积小、重量轻、灵活、不要求阻抗匹配以及可实现模拟滤波器无法实现的特殊功能等。
按照不同的分类方法,数字滤波器有许多种类,但总的来说可分为两类:
经典滤波器,特点是其输入信号中有用的频率成分和期望滤除的频率成分各占不不同的频带,通过一个合适的选频滤波器滤除某个频带或频率成分的干扰,得到纯净信号,达到滤波的目的
现代滤波器,用于信号与干扰的频带互相重叠的情况,现代滤波器是根据随机信号的一些统计特性,在某种最佳准则下,最大限度的抑制干扰,恢复信号,从而达到滤波的目的,如维纳滤波器,卡尔曼滤波器等
经典数字特性滤波器从滤波特性上分类,可分为低通、高通、带通、带阻滤波器
理想滤波器对应的冲激响应都是非因果和无限长的,因此都是不可实现的。
实际中,数字滤波器在通带和阻带的幅度响应指标以一定容限的允许误差来表征。
此外,在通带和阻带间给出了一个过渡带,以使幅度平滑地从通带下降到阻带。
经典数字滤波器从单位脉冲响应长度分类,可分为
无限长单位脉冲响应(IIR)滤波器
有限长单位脉冲响应(FIR)滤波器
1.IIR滤波器是给定了滤波器的技术指标后,确定滤波器阶数N和系数,在满足技术指标的前提下,滤波器的阶数尽可能低
2.IIR滤波器结构更复杂,没有线性相位响应,存在反馈,稳定性不能保证,使IIR滤波器的数字运算可能存在溢出
3.IIR滤波器计算每个滤波器输出样点值所需的乘法数要少得多。IIR滤波器的速度很快,从硬件设计的角度来看,其构造的滤波器的采样频率可远高于FIR滤波器,从而达到实时工作的需求
直接法:直接在频域或者时域中设计数字滤波器
间接法:借助于模拟滤波器的设计原型进行设计的,又称滤波器的函数模型设计法,较常用。包括:
模拟滤波器原型介绍
模拟到数字滤波器的转换
数字滤波器的频带转换
1.将给出的数字滤波器的技术指标转换为模拟低通滤波器的技术指标
2.根据转换后的技术指标设计模拟低通滤波器G(s)
3.按一定规则将G(s)转换成H(z)
4.若所设计的数字滤波器是低通的,那么上述设计工作结束;若所涉及的是高通、带通或带阻滤波器,那么进行步骤5
5.将高通、带通或带阻数字滤波器的技术指标先转化为低通模拟滤波器的技术指标,然后按上述步骤2设计出低通G(s),再将G(s)转换为所需的H(z)
1.设计一个满足下列指标的BW型模拟低通滤波器
fp=1kHz,fs=2kHz,Ap≤1dB,As≥40dB
clc
clear
close all
%模拟滤波器参数
Wp=2*pi*1000;Ws=2*pi*2000;Ap=1;As=40;
%计算模拟滤波器的阶数
[N,Wc]=buttord(Wp,Ws,Ap,As,'s');
fprintf('Order of the filter=%.0f\n',N)
%计算模拟滤波器的系数
[num,den]=butter(N,Wc,'s');
disp('Numerator polynomial');fprintf('%.4e\n',num);
disp('Denominator polynomial');fprintf('%.4e\n',den);
%计算Wp、Ws处模拟滤波器响应值
omega=[Wp Ws];h=freqs(num,den,omega);
Ap=-20*log10(abs(h(1)));As=-20*log10(abs(h(2)));
fprintf('Ap=%.4f\n',Ap);fprintf('As=%.4f\n',As);
%计算0~6000π模拟滤波器的频率响应
omega=[0:200:3000*2*pi];
h=freqs(num,den,omega);
gain=20*log10(abs(h));
%绘图
figure
plot(omega/(2*pi),gain);title('BW型模拟低通滤波器');
xlabel('Frequency in Hz');ylabel('Gain in dB');
grid on
2.设计满足下列指标的BW型模拟带阻滤波器
Wp1=10rad/s,Wp2=30rad/s,Ap≤1dB,
Ws1=19rad/s,Ws2=21rad/s,As≥20dB
clc
clear
close all
%带阻模拟滤波器参数
Ap=1;As=20;wp1=10;wp2=30;ws1=19;ws2=21;
B=ws2-ws1;w0=sqrt(ws1*ws2);
wLp1=B*wp1/(w0*w0-wp1*wp1);wLp2=B*wp2/(w0*w0-wp2*wp2);
wLp=max(abs(wLp1),abs(wLp2));wLs=1;
%计算低通模拟滤波器阶数
[N,Wc]=buttord(wLp,wLs,Ap,As,'s');
%计算低通模拟滤波器系数
[num,den]=butter(N,Wc,'s');
%低通转换为带通
[numt,dent]=lp2bs(num,den,w0,B);
omega=[10,30,19,21];
h=freqs(numt,dent,omega);
fprintf('Ap1=%.4f\n',-20*log10(abs(h(1))));
fprintf('Ap1=%.4f\n',-20*log10(abs(h(2))));
fprintf('Ap1=%.4f\n',-20*log10(abs(h(3))));
fprintf('Ap1=%.4f\n',-20*log10(abs(h(4))));
w=linspace(5,35,1000);h=freqs(numt,dent,w);
figure
plot(w,20*log10(abs(h)));title('BW型模拟带阻滤波器');
xlabel('Frequency in rad/s');ylabel('Gain in dB');
grid on
clc
clear
close all
%带通数字滤波器参数
Wp=[0.45*pi,0.55*pi];Ws=[0.40*pi,0.60*pi];Ap=3;As=30;
%计算低通数字滤波器阶数
[N,Wc]=buttord(Wp/pi,Ws/pi,Ap,As);
fprintf('N=%.0f\n',N);
%计算带通数字滤波器系数
[numd,dend]=butter(N,Wc);
fprintf('numd=%.4f',numd);fprintf('dend=%.4f\n',dend);
omega=[Wp Ws];
h=freqz(numd,dend,omega);
fprintf('Ap1=%.4f\n',-20*log10(abs(h(1))));
fprintf('Ap2=%.4f\n',-20*log10(abs(h(2))));
fprintf('As1=%.4f\n',-20*log10(abs(h(3))));
fprintf('As2=%.4f\n',-20*log10(abs(h(4))));
w=linspace(0.3*pi,0.7*pi,1000);
h=freqz(numd,dend,w);
figure
plot(w/pi,20*log10(abs(h)));
xlabel('Frequency in rad');ylabel('Gain in dB');
grid on
4.设计满足下列指标的BW型模拟高通滤波器
fp=5kHz,fs=1kHz,Ap≤1dB,As≥40dB
clc
clear
close all
%模拟滤波器参数
fp=5000;fs=1000;Ap=1;As=40;
%高通参数转换为低通参数
wLp=1/(2*pi*fp);wLs=1/(2*pi*fs);
%计算模拟滤波器阶数
[N,Wc]=buttord(wLp,wLs,Ap,As,'s');
%计算模拟滤波器系数
[num,den]=butter(N,Wc,'s')
%低通转换为高通
[numt,dent]=lp2hp(num,den,1);
omega=[2*pi*fp,2*pi*fs];
h=freqs(numt,dent,omega);
fprintf('Ap=%.4f\n',-20*log10(abs(h(1))));
fprintf('As=%.4f\n',-20*log10(abs(h(2))));
omega=[0:200:6000*2*pi];
h=freqs(numt,dent,omega);
gain=20*log10(abs(h));
figure
plot(omega/(2*pi),gain);title('BW型模拟高通滤波器')
xlabel('Frequency in Hz');ylabel('Gain in dB');
grid on
参考资料:
北京交通大学电子信息工程学院,陈后金,数字信号处理课件
西安电子科技大学电子工程学院 ,田春娜,数字信号处理课件
https://wenku.baidu.com/view/145a128329ea81c758f5f61fb7360b4c2f3f2a64.html?fr=search
https://wenku.baidu.com/view/95b97bdb854769eae009581b6bd97f192379bf13.html?fr=search
https://wenku.baidu.com/view/8b56f438793e0912a21614791711cc7931b7788a.html?fr=search