funi 发表于 2005-7-27 14:31

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

求下列直接型系统函数的零、极点,并将它转换成二阶节形式解

用MATLAB计算程序如下:
num=; den=;
=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

系统函数的二阶节形式为:


极点图见图5.1。


[ 本帖最后由 ChaChing 于 2009-12-28 22:00 编辑 ]

funi 发表于 2005-7-27 14:33

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

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

clf; =ellip(5,0.4,50,0.4);
=freqz(b,a,512); g=20*log10(abs(h));
bq=a2dT(b,5); aq=a2dT(a,5);
=freqz(bq,aq,512); gq=20*log10(abs(hq));
plot(w/pi,g,'b',w/pi,gq,'r:');
grid; axis(); xlabel('\omega/\pi'); ylabel('Gain, dB'); legend('量化前','量化后');
figure; = tf2zp(b,a); = tf2zp(bq,aq);
zplaneplot(,,{'o','x','*','+'});
legend('量化前的零点','量化后的零点','量化前的极点','量化后的极点');

图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 编辑 ]
页: [1]
查看完整版本: 数字信号处理系统的实现实例1