离散时间系统的时域分析--一阶和二阶差分方程求解
课程设计任务书
目 录
1 引言 ............................................... 1 2 Matlab7.0入门 ...................................... 1 3 利用Matlab 7.0实现一阶和二阶差分方程求解的设计 .... 2
3.1 设计原理分析 .................................. 2
3.1.1 差分方程定义 ............................ 2 3.1.2 差分方程的意义与应用 .................... 2 3.1.3 用MATLAB 仿真时用的相关函数说明 ......... 3 3.2 一阶和二阶差分方程求解的编程设计及实现 ........ 4
3.2.1 设计函数思路 ............................ 4 3.2.2 理论计算 ................................ 4 3.2.3 设计过程记录及运行结果 .................. 5
4 结论 ............................................... 5 5 参考文献 ........................................... 6
1 引言
人们之间的交流是通过消息的传播来实现的,信号则是消息的表现形式,消息是信号的具体内容。
《信号与系统》课程是一门实用性较强、涉及面较广的专业基础课,该课程是将学生从电路分析的知识领域引入信号处理与传输领域的关键性课程, 对后续专业课起着承上启下的作用. 该课的基本方法和理论大量应用于计算机信息处理的各个领域, 特别是通信、数字语音处理、数字图像处理、数字信号分析等领域, 应用更为广泛。
近年来,计算机多媒体教序手段的运用逐步普及,大量优秀的科学计算和系统仿真软件不断涌现,为我们实现计算机辅助教学和学生上机实验提供了很好的平台。通过对这些软件的分析和对比,我们选择MATLAB 语言作为辅助教学工具,借助MATLAB 强大的计算能力和图形表现能力,将《信号与系统》中的概念、方法和相应的结果,以图形的形式直观地展现给我们,大大的方便我们迅速掌握和理解老师上课教的有关信号与系统的知识。
2 Matlab7.0入门
MATLAB 的名称源自Matrix Laboratory ,它是一种科学计算软件,专门以矩阵的形式处理数据。MATLAB 将高性能的数值计算和可视化集成在一起,并提供了大量的内置函数,从而被广泛地应用于科学计算、控制系统、信息处理等领域的分析、仿真和设计工作,而且利用MATLAB 产品的开放式结构,可以非常容易地对MATLAB 的功能进行扩充,从而在不断深化对问题认识的同时,不断完善MATLAB 产品以提高产品自身的竞争能力。
Matlab7.0比Matlab 的老版本提供了更多更强的新功能和更全面、更方便的联机帮助信息。当然也比以前的版本对于软件、硬件提出了更高的要求。
在国内外Matlab 已经经受了多年的考验。Matlab7.0功能强大,适用范围很广。其可以用来线性代数里的向量、数组、矩阵运算,复数运算,高次方程求根,插值与数值微商运算,数值积分运算,常微分方程的数值积分运算、数值逼近、最优化方法等,即差不多所有科学研究与工程技术应用需要的各方面的计算,均可用Matlab 来解决。
MATLAB是MATLAB 产品家族的基础,它提供了基本的数学算法,例如矩阵运算、数值分析算法,MATLAB 集成了2D 和3D 图形功能,以完成相应数值可视化的工作,并且提供了一种交互式的高级编程语言——M 语言,利用M 语言可以通过编写脚本或者函数文件实现用户自己的算法。
利用M 语言还开发了相应的MATLAB 专业工具箱函数供用户直接使用。这些工具箱应用的算法是开放的可扩展的,用户不仅可以查看其中的算法,还可以针对一些算法进行修改,甚至允许开发自己的算法扩充工具箱的功能。目前MATLAB 产品的工具箱有四十多个,分别涵盖了数据采集、科学计算、控制系统设计与分析、数字信号处理、数字图像处理、金融财务分析以及生物遗传工程等专业领域。
综上,在进行信号的分析与仿真时,MATLAB7.0无疑是一个强大而实用的工具。尤其对于信号的分析起到了直观而形象的作用,非常适合与相关课题的研究与分析。
·3 利用Matlab 7.0实现一阶和二阶差分方程求解的设计
3.1 设计原理分析
3.1.1 差分方程定义
含有未知函数y(t)=f(t)以及yt 的差分Dy(t), D2y(t),…的函数方程,称为常差分方程(简称差分方程) ;出现在差分方程中的差分的最高阶数,称为差分方程的阶。n 阶差分方程的一般形式为F(t,y(t),D y(t),…, Dn y(t))=0,其中F 是t ,y(t), D y(t),…, Dn y(t)的已知函数,且Dnyt 一定要在方程中出现。
含有两个或两个以上函数值y(t),y(t+1),…的函数方程,称为(常) 差分方程,出现在差分方程中未知函数下标的最大差,称为差分方程的阶。n 阶差分方程的一般形式为F(t,y(t),y(t+1),…,y(t+n))=0,其中F 为t ,y(t),y(t+1),…,y(t+n)的已知函数,且y(t)和y(t+n)一定要在差分方程中出现。 3.1.2 差分方程的意义与应用
差分方程模型有着广泛的应用。实际上,连续变量可以用离散变量来近似逼近1,从而微分方程模型就可以近似于某个差分方程模型。差分方程模型有着非常广泛的实际背景。在经济金融保险领域、生物种群数量结构规律分析、疫病和病虫害的控制与防治、
遗传规律的研究等许许多多的方面都有着非常重要的的作用。可以这样讲,只要牵涉到关于变量的规律,性质,就可以适当的用差分方程模型来表现体与分析求解。 3.1.3 用MATLAB 仿真时用的相关函数说明
在用MATLAB 仿真离散系统的差分方程时可以用函数y=filter(p,d,x)实现差分方程的仿真,用y=impz(p,d,N)求系统的冲激响应。 (1)利用filter 函数实现差分方程说明:
filter([1,2],1,[1,2,3,4,5])实现 y[k]=x[k]+2*x[k-1] y[1]=x[1]+2*0=1%(x[1]之前状态都用0) y[2]=x[2]+2*x[1]=2+2*1=4
(2)用filter 函数求该差分方程y[n]+0.75y[n-1]+0.125y[n-2]=x[n]-x[n-1]的单位冲激响应和单位阶跃响应说明: 单位冲激响应: a1=[1,0.75,0.125]; b1=[1,-1]; n=0:20;
x1=[1,zeros(1,20)]; y1filter=filter(b1,a1,x1); stem(n,y1filter); title('y1filter'); xlabel('x'); ylabel('y'); 单位阶跃响应: a1=[1,0.75,0.125]; b1=[1,-1]; n=0:20; 2x2=ones(1,21); y1filter=filter(b1,a1,x2); stem(n,y1filter); title('y1filter_step');
xabel('x'); ylabel('y');
(3)用impz 函数求差分方程y[n]+0.75y[n-1]+0.125y[n-2]=x[n]-x[n-1]的单位冲击响应和单位阶跃响应说明:
单位冲击响应: a1=[1,0.75,0.125]; b1=[1,-1]; impz(b1,a1,21); 单位阶跃响应: a=[1,0.75,0.125]; b=1; impz(b,a);
即y=filter(p,d,x)用来实现差分方程,d 表示差分方程输出y 的系数,p 表示输入x 的系数,而x 表示输入序列。输出结果长度数等于x 的长度。y=impz(p,d,N)是用来实现冲击响应的,d 和p 的定义见filter ,N 表示冲击响应输出的序列个数。
3.2 一阶和二阶差分方程求解的编程设计及实现
3.2.1 设计函数思路
利用MATLAB 软件实现这个仿真过程,其中应用到filter 函数来实现差分方程的零状态响应,利用impz 函数来实现差分方程0~20区间的样值的取样。 3.2.2 理论计算
由y(n)-0.25y(n-1)+0.5y(n-2)=f(n)+f(n-1)两边Z 变换得Y(Z)
Y (Z )(1-11111
+)=F(Z)(1+) →H(Z)=
Z 4Z 2Z
Z 2+Z
11Z 3-Z +
42
3.2.3设计过程记录及运行结果
一阶:a=[1 -0.25]; %差分方程系数 b=[1]; %差分方程系数 n=0:20; %序列个数 fn=0.5.^n; %输入序列 y=filter(b,a,fn); %系统零状态响应 subplot(1,3,1),stem(n,fn,'filled');title('输入序列');grid on
subplot(1,3,2),stem(n,y,'filled');title('0-20区间的样值');grid on subplot(1,3,3),stem(n,y,'filled');title('零状态响应');grid on 结果如图所示。
二阶:
a=[1 -0.25 0.5]; %差分方程系数 b=[1 1]; %差分方程系数 n=0:20; %序列个数 fn=0.5.^n; %输入序列 y=filter(b,a,fn); %系统零状态响应 subplot(1,3,1),stem(n,fn,'filled');title('输入序列');grid on
subplot(1,3,2),stem(n,y,'filled');title('0-20区间的样值');grid on subplot(1,3,3),stem(n,y,'filled');title('零状态响应');grid on
结果图如图所示。
仿真结果图
4 结 论
线性时不变系统的求解方法有多种,课题主要用Z 变换法解差分方程。通过Z 变换求系统响应方程,将其逆Z 变换求出系统函数,再将输入函数带入解得响应求出具体解,这是本课题解差分方程的基本思路。通过对该因果稳定线性时不变系统的差分方程课程的设计,我掌握了程序设计的基本步骤及基本原理。对程序设计前所需进行的基本步骤有一定的了解。熟悉了设计编译基本流程,熟练了对MATLAB 的使用。
这次的课程设计项目是用MATLAB 仿真实现差分方程,在我们仿真的工程中,出现过许多错误,这其中主要的错就是在编写0~20区间冲激响应的相关程序代码,以及阶跃信号的输入。然后经过修改,我们得出正确的结果。
刚开始着手用MATLAB 做课程设计时感觉有点一头雾水,没有方向,不知该从哪开始,后来经过仔细研究,慢慢感觉不太难做,最后也还算是顺利完成课程设计。
这次课程设计给我最大的收获就是更加切实实际的了解了差分方程的物理概念及在工程上的意义。其次,通过本次设计,我提升了对信号处理及其实验软件MATLAB 的喜爱及学习的热情,我认识到在学习中不仅要重视理论,更应该把理论用于实践中去,这才是学习的真正目的和意义。
在做课程设计之前一定要将课本上的相关知识点理解,因为这是基础,要多看相关的例题,否则相关知识点不清楚会给设计加大难度,浪费很多时间。
沈阳理工大学课程设计
5 参考文献
1.信号与线性系统分析:基于MATLAB 的方法与实现 作者: 梁虹,普园媛,梁洁 著 出版社: 高等教育出版社 2006-05-01
2.信号与系统:MATLAB 综合实验 作者: 谷源涛,应启珩,郑君里 著出 版 社: 高等教育出版社 2008-01-01