2.差分方程及其求解---数字信号处理实验报告
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
计算机与信息工程学院验证性实验报告
一、实验目的
1.学习并掌握系统的差分方程表示方法以及差分方程的相关概念。
2.熟练使用filter 函数对差分方程进行数值求解。
3.掌握差分方程的求解及MATLAB 实现方法。
二、实验原理及方法
1.一LTI 系统可以用一个线性常系数差分方程表示:
00()()N M
k m k m a
y n k b x n m ==-=-∑∑,任意n 如果N a ≠0,那么这个差分方程就是N 阶的,已知系统的输入序列,用这个方程可以根据当前输入x(n)和以前M 点的输入x(n-m ),…,x(n-1),以及以前N 点的输出y(n-N),…,y(n -1)来计算当前输出y(n)。在实际中这个方程在时间上是从n =-∞到n =+∞朝前计算的,因此该方程的另一种形式是:
00()()()M N
m k m k y n b x n m a y n k ===---∑∑
方程的解能以下面形式求得:()()()H p y n y n y n =+分别为方程的齐次解跟特解部分。已知输入和差分方程的稀疏,可用filter 对差分方程进行数值求解。最简单形式为:y=filter(b,a,x) 其中b=[b0,b1,…,bM];a=[a0,a1,…,aN];
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、已知下面差分方程:
()(1)0.9(2)()y n y n y n x n --+-=;任意n
要求:
a.计算并画出在n=-20,…,100的脉冲响应h(n);
b.计算并画出在n=-20,…,100的单位阶跃相应s(n).
2.解以下差分方程:
31()(1)(2)(),022
y n y n y n x n n --+-=≥ 其中1()()()4
n x n u n =,初始条件为y(-1)=4和y(-2)=10。 要求先用理论计算,再用MATLAB 编程实现,并对比两个结果。
参考流程图:
实验内容1.
实验内容2.
四、实验报告要求
1.总结差分方程的性质及应用.
2.写出实验程序.记录实验数据并与理论计算作比较,总结结果。
五、实验程序及结果
针对问题一:
问题a的程序如下:
先建立一个生成单位抽样序列的M文件
function [x,n]=impseq(n0,n1,n2)
if((n0
error('参数必须满足n1<=n0<=n2')
end
n=n1:n2;
x=[(n-n0)==0];
主程序如下:
clc;clear all
b=1;a=[1 -1 0.9];
[x,n]=impseq(0,-20,100);
y=filter(b,a,x);
plot(n,y)