差分方程及求解MATLAB实现

您所在的位置:网站首页 差分方程求解方法包括 差分方程及求解MATLAB实现

差分方程及求解MATLAB实现

2024-06-09 16:34| 来源: 网络整理| 查看: 265

一、 实验目的

1.学习并掌握系统的差分方程表示方法以及差分方程的相关概念。 2.熟练使用filter函数对差分方程进行数值求解。 3.掌握差分方程的求解及MATLAB实现方法。

二、实验原理及方法 1.一LTI系统可以用一个线性常系数差分方程表示:

\sum_{k=0}^{N} a_{k} y(n-k)=\sum_{m=0}^{M} b_{m} x(n-m) 如果 aN   ≠ 0 ,那么这个差分方程就是N阶的,已知系统的输入序列,用这个方程可以根据当 前输入x(n)和以前M点的输入x(n-m),…,x(n-1),以及以前N点的输出y(n-N),…,y(n-1)来计算当前输出y(n)。在实际中这个方程在时间上是从n = −∞ 到 n = ∞ 朝前计算的,因此该方程的另一种形式是:

y(n)=\sum_{m=0}^{M} b_{m} x(n-m)-\sum_{k=1}^{N} a_{k} y(n-k) 方程的解能以下面形式求得: y(n) = yH (n) + yp (n) 分别为方程的齐次解跟特解部分。已知输入和差分方程的稀疏, 可用filter 对差分方程进行数值求解。最简单形式为:

 y=\text { filter }(b, a, x) \mathrm{b}=[\mathrm{b} 0, \mathrm{~b} 1, \cdots, \mathrm{bM}] ; \mathrm{a}=[\mathrm{a} 0, \mathrm{a} 1, \cdots \mathrm{a} M] 2. 上面差分方程解的形式为齐次解和特解,另外还可以求零输入解和零状态解理论计算中 要用到z变换,请好好掌握z变换的内容。用MATLAB实现时,若已知初始条件,则应用y =  filter(b, a, x, xic) 来求完全响应。这里xic是初始状态输入数组。MATLAB还提供一种filtic函数来得到xic。xic =filtic(b, a,Y , X ) 其中b和a是滤波器系数数组,Y和X是分别从y(n)和x(n)的初始条件得来的初始状态数组。 三.实验内容 1、已知下面差分方程: y(n)-y(n-1)+0.9y(n-2)=x(n);任意n 要求a.计算并画出在n=-20,…,100的脉冲响应h(n);        b.计算并画出在n=-20,…,100的单位阶跃相应s(n). 2.解以下差分方程:

 

 要求先用理论计算,再用MATLAB编程实现,并对比两个结果。参考流程图: 实验内容 1.

 实验内容2.

四、实验报告要求 1.总结差分方程的性质及应用. 2.写出实验程序.记录实验数据并与理论计算作比较,总结结果。

4.1-a: b=1; a=[1,-1,0.9]; h=[zeros(1,20),1,zeros(1,100)]; y=filter(b,a,h); n=-20:100; stem(n,y); xlabel('n'); ylabel('h(n)') 4.1-b: b=1; a=[1,-1,0.9]; u=[zeros(1,20),ones(1,101)]; y=filter(b,a,u); n=-20:100; stem(n,y); xlabel('n'); ylabel('s(n)') 4.2 b=[1]; a=[1,-3/2,1/2]; n1=-10:-1; n2=0:10; x=[zeros(size(n1)),(1/4).^n2]; y=[zeros(size(n1)-[0,2]),10,4,zeros(size(n2))]; xic=filtic(b,a,y,x); y=filter(b,a,x,xic); subplot(2,1,1) stem([n1,n2],x); xlabel('n'); ylabel('x(n)'); grid; subplot(2,1,2); stem([n1,n2],y); xlabel('n'); ylabel('y(n)'); grid



【本文地址】


今日新闻


推荐新闻


CopyRight 2018-2019 办公设备维修网 版权所有 豫ICP备15022753号-3