基于MATLAB的数字滤波器的设计(8)

2019-03-23 10:19

OmegaS = (2/T)*tan(ws/2);

%设计 Chebyshev 低通滤波器原型 ep = sqrt(10^(Rp/10)-1); A = 10^(As/20); OmegaC = OmegaP; OmegaR = OmegaS/OmegaP; g = sqrt(A*A-1)/ep;

N=ceil(log10(g+sqrt(g*g-1))/log10(OmegaR+sqrt(OmegaR*OmegaR-1)));

[z,p,k] = cheb1ap(N,Rp); a = real(poly(p)); aNn = a(N+1); p = p*OmegaC; a = real(poly(p)); aNu = a(N+1); k = k*aNu/aNn; b0 = k;

B = real(poly(z)); b = k*B; % 双线性变换

[bz,az] = bilinear(b,a,FS); % 绘制结果

32

%获取零极点参数

%freqz(bz,az,200,FS,'whole'); H=freqz(bz,az,200,'whole'); plot(abs(H));

图2-14双线性变换法实现 Chebyshev低通(I 型) [1]

2.2.2 高通变换

有模拟低通滤波器至模拟高通滤波器的变换就是s变量的倒量变

21?z?1换。将这个关系用于高通滤波器的设计,只要将式子s?双线

T1?z?1性变换中的s用其倒数1/s代替,就可以得到数字高通滤波器,即

T1?z?1s?

21?z?1 (2-26)

由于倒量的变换没有改变模拟滤波器的稳定条件,因此,也不会

j?影响双线性变换后的稳定条件。令s?j?,z?e,代入(2-26)中,

可得

T?T??.cot(?/2) (2-27) ??.cot(?/2) 或

22 33

在MATLAB环境下用函数对用双线性变换法设计一个ChebyshevⅡ高通滤波器的实现如下:

s=2*pi*1kHz,Wp=2*pi*1.4kHz,在Ws处的最小衰减为15dB,在Wp处的最大衰减不超过0.3dB,抽样频率为20kHz[1]。

编程代码:

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;

34

xlabel('频率/Hz'); ylabel('幅值');

图2-15 ChebyshevⅡ高通滤波器的频率响应(基于MATLAB实现) 由图看出模拟滤波器在Ω趋于无穷处的三阶零点通过高通变换后出现在w=0(z=1)处,这正是高通滤波器所希望的。 2.2.3 带通变换

在已知模拟低通滤波器的系统函数G(s),则模拟低通滤波器s平面到数字带通滤波器的Z平面的变换公式:

1?2z?1coa?0?1 (2-28)s?2z?1令s?j?,z?ej? 代入(2-28),可得:

??cos?0?cos?

sin? (2-29)

在设计带通时,通过给定的上下边界频率?1和?2代入(2-29)式中就能得到

?1?cos?0?cos?1cos?0?cos?2 和 ?2?

sin?1sin?2 35

由于?1和?2是一对镜像频率即:?1=-?2将此关系式代入上面的两个等式可得

cos?0?sin(?1??2) (2-30)

sin?1?sin?2通过(2-30)式可以求得模拟低通边界?c:

?c?cos?0?cos?1sin?1 (2-31)

根据上式,将数字带通滤波器中所给出的边界频率映射到低通模拟滤波器的边界频率作为设计的指标设计的低通模拟滤波器,再通过(2-28)式,就能得出特定滤波器要求的数字带通滤波器。

下面在MATLAB环境下用函数对带通数字滤波器的仿真实现: 编程代码:

%采样频率 100Hz,Wpl=20Hz,Wph=30Hz,Wsl=15Hz,Wsh=35Hz,

% 频率/采样频率*2*pi

%Wpl=0.4*pi,Wph=0.6*pi,Wsl=0.2*pi,Wsh=0.8*pi, %Rp=1;As=20

T = 1; Fs = 1/T; % Set T=1 %T=2;

Wpl=tan(0.4/2/Fs*pi); Wph=tan(0.6/2/Fs*pi); Wsl=tan(0.3/2/Fs*pi); Wsh=tan(0.7/2/Fs*pi);

36


基于MATLAB的数字滤波器的设计(8).doc 将本文的Word文档下载到电脑 下载失败或者文档不完整,请联系客服人员解决!

下一篇:三道岗镇中心小学工作总结2014年1月

相关阅读
本类排行
× 注册会员免费下载(下载后可以自由复制和排版)

马上注册会员

注:下载文档有可能“只有目录或者内容不全”等情况,请下载之前注意辨别,如果您已付费且无法下载或内容有问题,请联系我们协助你处理。
微信: QQ: