数字信号处理 实验作业:离散LSI系统的时域分析 联系客服

发布时间 : 星期一 文章数字信号处理 实验作业:离散LSI系统的时域分析更新完毕开始阅读317780480508763230121243

实 验 报 告

课程名称 数字信号处理 实验成绩 指导教师 ***

院系 班级

学号 姓名 日期

实验2 离散LSI系统的时域分析

一、.实验目的:

1、加深对离散系统的差分方程、单位脉冲响应、单位阶跃响应和卷积分析方法的理解。

2、初步了解用MATLAB语言进行离散时间系统时域分析的基本方法。

3、掌握求解离散时间系统的单位脉冲响应、单位阶跃响应、线性卷积以及差分方程的程序的编写方法,了解常用子函数的调用格式。

二、实验原理:

1、离散LSI系统的响应与激励

由离散时间系统的时域分析方法可知,一个离散LSI系统的响应与激励可以用如下框图表示:

x[n]y[n]Discrete-timesystmeNM

其输入、输出关系可用以下差分方程描述:

?ak?0ky[n?k]??bkx[n?m]

k?02、用函数impz和dstep求解离散系统的单位脉冲响应和单位阶跃响应。

例2-1 已知描述某因果系统的差分方程为6y(n)+2y(n-2)=x(n)+3x(n-1)+3x(n-2)+x(n-3) 满足初始条件y(-1)=0,x(-1)=0,求系统的单位脉冲响应和单位阶跃响应。

解: 将y(n)项的系数a0进行归一化,得到

y(n)+1/3y(n-2)=1/6x(n)+1/2x(n-1)+1/2x(n-2)+1/6x(n-3)

分析上式可知,这是一个3阶系统,列出其bk和ak系数: a0=1, a,1=0, a,2=1/3, a,3=0 b0=1/6,b,1=1/2, b,2=1/2, b,3=1/6

程序清单如下: a=[1,0,1/3,0]; b=[1/6,1/2,1/2,1/6]; N=32; n=0:N-1; hn=impz(b,a,n); gn=dstep(b,a,n);

subplot(1,2,1);stem(n,hn,'k');

title('系统的单位序列响应'); ylabel('h(n)');xlabel('n');

axis([0,N,1.1*min(hn),1.1*max(hn)]); subplot(1,2,2);stem(n,gn,'k'); title('系统的单位阶跃响应'); ylabel('g(n)');xlabel('n');

axis([0,N,1.1*min(gn),1.1*max(gn)]); 程序运行结果如图2-1所示:

系统的单位序列响应1.20.51.10.410.90.30.8h(n)系统的单位阶跃响应0.2g(n)0.70.60.10.500.40.30.2010n2030010n2030-0.1

图2-1

3、用函数filtic和filter求解离散系统的单位序列响应和单位阶跃响应。

例2-2 已知描述某因果系统的差分方程为6y(n)-2y(n-4)=x(n)-3x(n-2)+3x(n-4)-x(n-6),满足初始条件y(-1)=0,x(-1)=0,求系统的单位脉冲响应和单位阶跃响应。时间轴上N取32点。

注意:原式非标准形式,必须化为标准形式后再列出系数b,a。 程序清单如下: x01=0;y01=0; a=[1,0,0,0,-1/3,0,0];

b=[1/6,0,-1/2,0,1/2,0,-1/6]; N=32;n=0:N-1; xi=filtic(b,a,0); x1=[n==0]; hn=filter(b,a,x1,xi); x2=[n>=0]; gn=filter(b,a,x2,xi); subplot(1,2,1);stem(n,hn,'k'); title('系统的单位序列响应'); ylabel('h(n)');xlabel('n');

axis([0,N,1.1*min(hn),1.1*max(hn)]); subplot(1,2,2);stem(n,gn,'k'); title('系统的单位阶跃响应'); ylabel('g(n)');xlabel('n');

axis([0,N,1.1*min(gn),1.1*max(gn)]); 程序运行结果如图2-2所示:

系统的单位序列响应0.60.40.2)n(h0-0.2-0.40102030n系统的单位阶跃响应0.20.10-0.1-0.2-0.30102030ng(n)

图2-2

4、用MATLAB实现线性卷积 1)用函数conv进行卷积运算:

求解两个序列的卷积和,关键在于如何确定卷积结果的时宽区间。MATLAB提供的求卷积函数conv默认两个序列的序号均从n=0开始,卷积结果y对应的序列的序号也从n=0开始。

例2-3 已知两个序列f1=0.8n (0

subplot(2,2,1);stem(n1,f1,'filled'); title('f1(n)'); n2=0:10; N2=length(n2); f2=ones(1,N2);

subplot(2,2,2);stem(n2,f2,'filled'); title('f2(n)'); y=conv(f1,f2);

subplot(2,1,2);stem(y,'filled'); 程序运行结果如图2-3所示: