声振论坛

 找回密码
 我要加入

QQ登录

只需一步,快速开始

查看: 2659|回复: 1

[共享资源] 数字信号处理系统的实现实例1

[复制链接]
发表于 2005-7-27 14:31 | 显示全部楼层 |阅读模式

马上注册,结交更多好友,享用更多功能,让你轻松玩转社区。

您需要 登录 才可以下载或查看,没有账号?我要加入

x
求下列直接型系统函数的零、极点,并将它转换成二阶节形式解
Jdg9j2Xn.gif
用MATLAB计算程序如下:
num=[1 -0.1 -0.3 -0.3 -0.2]; den=[1 0.1 0.2 0.2 0.5];
[z,p,k]=tf2zp(num,den); m=abs(p);
disp('零点'); disp(z); disp('极点');disp(p); disp('增益系数');disp(k);
sos=zp2sos(z,p,k);
disp('二阶节'); disp(real(sos)); zplane(num,den)

输入到“num”和“den”的分别为分子和分母多项式的系数。计算求得零、极点增益系数和二阶节的系数:

零点 : 0.9615, -0.5730, -0.1443 + 0.5850i, -0.1443 - 0.5850i
极点 : 0.5276 + 0.6997i, 0.5276 - 0.6997i, -0.5776 + 0.5635i, -0.5776 - 0.5635i
增益系数 : 1

二阶节
1.0000 -0.3885 -0.5509 1.0000 1.1552 0.6511
1.0000 0.2885 0.3630 1.0000 -1.0552 0.7679

系统函数的二阶节形式为:
1sxY3BNP.gif

极点图见图5.1。
5SOHBLiu.gif

[ 本帖最后由 ChaChing 于 2009-12-28 22:00 编辑 ]
回复
分享到:

使用道具 举报

 楼主| 发表于 2005-7-27 14:33 | 显示全部楼层

数字信号处理系统的实现实例2

分析五阶椭圆低通滤波器的量化效应,其截止频率为0.4pi ,通带纹波为0.4dB,最小的阻带衰减为50dB。对滤波器进行截尾处理时,使用函数a2dT.m.。
解 用以下MATLAB程序分析量化效应

clf; [b,a]=ellip(5,0.4,50,0.4);
[h,w]=freqz(b,a,512); g=20*log10(abs(h));
bq=a2dT(b,5); aq=a2dT(a,5);
[hq,w]=freqz(bq,aq,512); gq=20*log10(abs(hq));
plot(w/pi,g,'b',w/pi,gq,'r:');
grid; axis([0 1 -80 5]); xlabel('\omega/\pi'); ylabel('Gain, dB'); legend('量化前','量化后');
figure; [z1,p1,k1] = tf2zp(b,a); [z2,p2,k2] = tf2zp(bq,aq);
zplaneplot([z1,z2],[p1,p2],{'o','x','*','+'});
legend('量化前的零点','量化后的零点','量化前的极点','量化后的极点');
VTn7VGSk.gif
图5.1(a)表示系数是无限精度的理想滤波器的频率响应(以实线表示)以及当滤波器系数截尾到5位时的频率响应(以短线表示)。由图可知,系数量化对频带的边缘影响较大,经系数量化后,增加了通带的波纹幅度,减小了过渡带宽,并且减小了最小的阻带衰减。

图5. 1(b)给出了系数量化以前和系数量化以后的椭圆低通滤波器的零极点位置。由图可知,系数的量化会使零极点的位置与它们的理想的标称位置相比发生显著的改变。在这个例子中,靠近虚轴的零点的位置变动最大,并且移向靠它最近的极点的位置。只要对程序稍作改变就可以分析舍入量化的影响。

为了研究二进制数量化效应对数字滤波器的影响,首先需要将十进制表示的滤波器系数转换成二进制数并进行量化,二进制数的量化既可以通过截尾法也可以通过舍入法实现。我们提供了如下的两个MATLAB程序:a2dT.m和a2dR.m,这两段程序分别将向量d中的每一个数按二进制数进行截尾或舍入量化,量化的精度是小数点以后保留b位,量化后返回的向量为beq。

function beq = a2dT(d,b)
% beq = a2dT(d,b) 将十进制数利用截尾法得到b位的二进制数,
%然后将该二进制数再转换为十进制数
m=1; d1=abs(d);
while fix(d1)>0, d1=abs(d)/(2^m); m=m+1; end
beq=fix(d1*2^b); beq=sign(d).*beq.*2^(m-b-1);

function beq=a2dR(d,b)
% beq=a2dR(d,b)将十进制数利用舍入法得到b位的二进制数
%然后将该二进制数再转换为十进制数
m=1; d1=abs(d);
while fix(d1)>0, d1=abs(d)/(2^m); m=m+1; end
beq=fix(d1*2^b+.5); beq=sign(d).*beq.*2^(m-b-1);

[ 本帖最后由 ChaChing 于 2009-12-28 22:04 编辑 ]
您需要登录后才可以回帖 登录 | 我要加入

本版积分规则

QQ|小黑屋|Archiver|手机版|联系我们|声振论坛

GMT+8, 2024-11-14 10:21 , Processed in 0.079528 second(s), 21 queries , Gzip On.

Powered by Discuz! X3.4

Copyright © 2001-2021, Tencent Cloud.

快速回复 返回顶部 返回列表