数字信号处理--实验二 求线性时不变系统的输出 下载本文

内容发布更新时间 : 2024/6/2 3:41:45星期一 下面是文章的全部内容请认真阅读。

学生实验报告

开课学院及实验室: 电子楼317 2013年 3 月18 日

学院 机械与电气年级、专工程学院 业、班 姓名 学号 实验课程名称 数字信号处理实验 成绩 实验项目名称 实验二 求线性时不变系统的输出 指导老师 一、实验目的 1. 学习用递推法求解差分方程的方法。 2. 学习用线性卷积法求网络输出的方法。 二、实验原理 一般网络或系统用线性常系数差分方程描述,如果已知差分方程和输入信号,用递推法求解差分方程或者求网络输出,最适合用计算计求解。但要注意N阶差分方程要预先给定N个初始条件。下面用例子说明用递推法求解差分方程的方框图。例如一个二阶差分方程如下: y(n)?a1y(n?1)?a2y(n?2)?b0x(n)?b1x(n?1) 式中,系数a1、a2、 b0 、b1为已知系数,x(n)是输入序列。设x(n)是因果序列,x(?1)?0,从n?0开始递推。当n?0时, y(0)?a1y(?1)?a2y(?2)?b0x(0)?b1x(?1) ?a1y(?1)?a2y(?2)?b0x(0) 式中,y(?1)和y(?2)是两个初始条件,要预先给定。这样求解网络输出的计算框图如图2.1所示。 图中,N表示递推了N步,即y(n)的长度。 如果用差分方程求系统的单位脉冲响应h(n),也可以用上面的计算框图。因为h(n)是系统输入?(n)时的零状态响应,因此计算框图中全部的初始条件为0,且x(n)??(n)。这样递推得到y(n)?h(n)。 已知h(n)和输入x(n),求系统输出y(n),也可以用线性卷积法进行。线性卷积法的公式如下:

y(n)?x(n)?h(n) ??x(m)h(n?m) m???? 图2.1 用递推法求解差分方程的框图 计算时,关键问题是根据x(n)和h(n)的特点,确定求和的上下限。例如,h(n)?0.9nu(n),x(n)?R10(n),卷积公式为 ?y(n)?Rm10(m)0.9n?u(n?m) m????根据上式中的R10(n),限制非零区间为:0?m?9,由u(n)限制非零区间为:m?n。由上面的不等式知道m的取值和n有关,可以分几种情况: 当n<0时, y(n)?0 当0?n<9时, ny(n)??0.9n?m m?0当n?9时, 9y(n)??0.9n?m m?0最后得到: 再用计算机计算y(n)。 如果给定的x(n)和h(n)是一些离散数据,更方便的是用MATLAB语言的数字信号工具箱函数conv计算两个n的取值从零开始的有限长序列的线性卷积。 三、使用仪器、材料 1、硬件:计算机 2、软件:Matlab 四、实验步骤 1.已知系统的差分方程如式:y(n)?0.9y(n?1)?x(n) (1) 输入信号=x(n)?R10(n),初始条件y(?1)?1,求解输出y(n); (2) 输入信号=x(n)?R10(n),初始条件y(?1)?0,求解输出y(n)。 2.已知系统差分方程为 y(n)?0.9y(n?1)?x(n) 求解系统的单位脉冲响应h(n),并打印h(n)~n曲线。 3.已知系统的单位脉冲响应h(n)?0.9nu(n),输入信号x(n)?R10(n),试用卷积法求解系统输出

y(n),并打印y(n)~n曲线。 五、实验过程原始记录(数据、图表、计算等) 1.(1)程序为: a=0.9; %差分方程系数a=0.9 ys=1; %初始状态:y(-1)=1 xn=[ones(1,10),zeros(1,20)]; %矩形序列 B=1; %差分方程系数 A=[1,-a]; xi=filtic(B,A,ys); %等效初始条件的输入序列 yn=filter(B,A,xn,xi); %调用filter函数解差分方程,求系统输出信号y(n) n=0:length(yn)-1; %位置向量设定 stem(n,yn,'.'); xlabel('n'); ylabel('y(n)') 7654)n(y3210051015202530n (2)程序为: a=0.9; %差分方程系数a=0.9 ys=0; %初始状态:y(-1)=0 xn=[ones(1,10),zeros(1,20)]; %矩形序列 B=1; %差分方程系数 A=[1,-a]; xi=filtic(B,A,ys); %等效初始条件的输入序列 yn=filter(B,A,xn,xi); %调用filter函数解差分方程,求系统输出信号y(n) n=0:length(yn)-1; %位置向量设定 stem(n,yn,'.'); xlabel('n'); ylabel('y(n)') 7654)n(y3210051015202530n 2.%方法一:初始条件y(-1)=0,得到的y(n)=h(n) a=0.9; %差分方程系数a=0.9 ys=0; %初始状态:y(-1)=0 xn=[1,zeros(1,49)]; %单位脉冲序列,长度N=50 B=1; %差分方程系数 A=[1,-a]; xi=filtic(B,A,ys); %等效初始条件的输入序列 yn=filter(B,A,xn,xi); %调用filter函数解差分方程,求系统输出信号y(n) n=0:length(yn)-1; %位置向量设定 subplot(1,2,1); stem(n,yn,'.'); xlabel('n'); ylabel('h(n)') title('方法一') %方法二:MATLAB的impz函数 B=1; A=[1,-0.9]; subplot(1,2,2); impz(B,A,50); %计算出单位脉冲响应50个样值 xlabel('n'); ylabel('h(n)'); title('方法二')

方法一方法二110.90.90.80.80.70.70.60.6))n0.5n((hh0.50.40.40.30.30.20.20.10.1002040600010203040nn 3. n=0:80; xn=[ones(1,10) ,zeros(1,10)]; %矩形序列 hn=0.9.^n; %系统的单位脉冲响应h(n) yn=conv(xn,hn); %调用conv函数求解系统输出y(n) ny=0:length(yn)-1; %位置向量设定 stem(ny,yn,'.'); xlabel('n'); ylabel('y(n)') 7654)n(y32100102030405060708090100n 六、实验结果及分析 理论计算: