DSPBlockset工具箱的开发与利用-Read.doc
文本预览下载声明
基于Simulink的数字滤波器的仿真
徐泽晖 王忠
(四川大学610065)数字滤波器,是指输入、输出均为数字信号,通过一定运算关系改变输入信号所含频率成分的相对比例或者滤除某些频率成分的器件。数字滤波器在数字信号处理的各种应用中发挥着十分重要的作用,它是通过对抽样数据进行数学运算处理来达到频域滤波的目的。数字滤波器从实现的网络结构或者从单位脉冲响应分类,可以分成无限脉冲响应(IIR)和有限脉冲响应(FIR)滤波器。MATLAB中的DSP Blockset工具箱提供完整丰富的模块范例函数库,以进行数字信号系统(DSP System)的设计、模拟与快速原型化(rapid prototyping)。可适用于建立古典(classical)、多速率(multirate)、适应性(adaptive)的滤波器。
MATLAB的DSP Blockset工具箱的两个基本组成就是滤波器的设计与实现部分以及谱分析部分。工具箱提供了丰富而简便的设计,实现FIR和IIR的方法,是原来繁琐的程序设计简化成函数的调用。
2.典型IIR数字滤波器的设计
双线性变换法
为了克服冲激响应不变法的频率混叠现象,需要使s平面与z平面建立一一对应的单值映射关系,即求出s=f(z),然后将它带入H(s),就可以求得H(z),即
H(z)=H(s)|s=f(z) (1)
为了克服多值映射这一缺点,我们首先把整个s平面压缩变换到某一中介的s1平面的一条横带里,其次再通过上面讨论过的标准变换关系z=es1T将此横带变换到整个z平面上去,这样就使s平面与z平面是一一对应的关系,消除了多值变换性,也就消除了频谱混叠现象。
例如试用双线性变换法设计一个ChebyshevⅡ高通滤波器,使其幅频特性逼近一个具有以下技术指标的模拟ChebyshevⅡ高通滤波器:Ws=2*pi*1kHz,Wp=2*pi*1.4kHz,在Ws处的最小衰减为15dB,在Wp处的最大衰减不超过0.3dB,抽样频率为20kHz。
MATLAB程序为
ws=2*pi*1000;
ws1=ws*2*pi;
wp=2*pi*1400;
wp1=wp*2*pi;
rp=0.3;
rs=15;
fs=20000;
[N,Wn]=cheb2ord(wp1,ws1,rp,rs,’s’);
[z,p,k]=cheb2ap(N,rs);
[A,B,C,D]=zp2ss(z,p,k);
[At,Bt,Ct,Dt]=lp2hp(A,B,C,D,Wn);
[At1,Bt1,Ct1,Dt1]=bilinear(At,Bt,Ct,Dt,fs);
[num,den]=ss2tf(At1,Bt1,Ct1,Dt1);
freqz(num,den);
[H,W]=freqz(num,den);
plot(W*fs/(2*pi),abs(H));grid;
xlabel(‘频率/Hz’);
ylabel(‘幅值’);
ChebyshevⅡ高通滤波器的频率响应如图1所示。
图1 ChebyshevⅡ高通滤波器的频率响应
3.FIR数字滤波器的设计
窗函数设计法
设理想带阻滤波器频率响应为
(2)
利用Kaiser窗函数,设计长度为55的阻带滤波器,使阻带衰减为60dB。参数β可由式(3)确定α
β=0.1102(α-8.7) (3)
其中α=60。
MATLAB程序如下:
n=55-1;
w=[0.4,0.6];
beta=0.1102*(60-8.7);
kaiw=Kaiser(n+1,beta);
b=fir1(n,w,’stop’,kaiw);
[h,w]=freqz(b,1,512,2);
plot(w,20*log10(abs(h)));grid;
xlabel(‘频率(归一化)’);
ylabel((‘幅度dB’));
带阻滤波器幅频特性实现如图2所示。
图2 带阻滤波器幅频特性
4. 数字滤波器的仿真及实现
DSP Blockset提供了200多个高级DSP和数学函数,包括变换、矩阵运算、FIR、IIR、自适应和多速率滤波、谱分析和实时数据I/O-所有这些都是高效的基于帧的实现。DSP Blockset对于开发语音、音频和基带通信算法、基于传感器的信号处理应用都是非常理想的。利用这个具有强大功能软件MATLAB中专为数字信号处理(DSP)而设计的工具箱DSP Blockset 对数字滤波器进行仿真。
本文通过调用Simulink中的功能模块构成数字滤波器的仿真框图,在仿真过程中,可以双击各功能模块,随时改变参数,获得不同状态下
显示全部