用matlab求解某已知的差分方程的单位冲激响应全过程
2008-11-24 20:39阅读:
ⅰ.设计题目:
已知某LIT系统的差分方程为:
3y(n)-4y(n-1)+2y(n-2)=x(n)+2x(n-1)
计算n=[-20:100]时的系统单位冲激响应。
ⅱ.设计要求:
本课程设计应满足以下要求:
1. 实用性:设计的典型函数应该能够正确运行.
2. 可读性:源程序代码清晰,有层次,主要程序段有注释.
ⅲ.设计目的:
在学习了数字信号处理这门课程后,按照基本原理,综合运用所学的知识,利用Matlab
,掌握系统的单位冲激响应内容,由给定的差分方程求解系统的单位冲激响应h(n).
ⅳ.设计原理:
根据给定的差分方程:
3y(n)-4y(n-1)+2y(n-2)=x(n)+2x(n-1)
利用z变换,求出H(z),再通过求其逆变换,得到系统单位冲激响应h(n)。
ⅴ.具体算法:
第一步,根据差分方程:
3y(n)-4y(n-1)+2y(n-2)=x(n)+2x(n-1)
用z变换求出H(z)的表达式,原式可化为:
ⅵ.MATLAB源程序:
计算系统单位冲激响应源程序:
num=[1,2,0];
den=[3,-4,2];
n=[-20:100];
hn=dimpulse(num,den)
hn=dimpulse(num,den);
stem(hn);
title('LTI系统的单位冲激响应')
ⅶ.系统仿真结果:
(1).LTI系统的单位冲激响应的计算结果:
h(n) =
0.3333
1.1111
1.2593
0.9383
0.4115
-0.0768
-0.3768
-0.4512
-0.3504
-0.1664
0.0117
0.1266
0.1609
0.1302
0.0663
0.0016
-0.0421
-0.0571
-0.0482
-0.0261
-0.0027
0.0138
0.0202
0.0177
0.0102
0.0018
-0.0045
-0.0071
-0.0065
-0.0039
-0.0009
0.0014
0.0025
0.0024
LTI系统的单位冲激响应的结果图:
ⅷ.运算结果验证:
在matlab中输入以下程序进行验证:
num=[1,2,0];
den=[3,-4,2];
disp(‘系统传递函数H(z)’);
printsys(num,den,‘z’);
disp(‘转为零极点增益模型’);
[z1,p1,k1]=tf2zp(num,den)
disp(‘转为零极点留数模型’);
[r1,p1]=residue(num,den)
h(n)=dimpulse(num,den)
输出结果为:
系统传递函数H(z)
num/den =
z^2 + 2 z
---------------
3 z^2 - 4 z + 2
转为零极点增益模型
z1 = 0
-2
p1 =0.6667 + 0.4714i
0.6667 - 0.4714i
k1 =0.3333
转为零极点留数模型
r1 =0.5556 - 0.5500i
0.5556 + 0.5500i
p1 =0.6667 + 0.4714i
0.6667 - 0.4714i
h(n)=
0.3333
1.1111
1.2593
0.9383
0.4115
-0.0768
-0.3768
-0.4512
-0.3504
-0.1664
0.0117
0.1266
0.1609
0.1302
0.0663
0.0016
-0.0421
-0.0571
-0.0482
-0.0261
-0.0027
0.0138
0.0202
0.0177
0.0102
0.0018
-0.0045
-0.0071
-0.0065
-0.0039
-0.0009
0.0014
0.0025
0.0024
ⅸ.对其进行理论验证:
当n=0时,
当n=1时,
同理可证,当n=2,3,……时,结果均与源程序运行结果相符,此实践课题已正确完成。