HEFEI UNIVERSITY信号与系统项目设计报告系别电子信息与电子工程系题目项目第十题专业电子信息工程班级 11电子信息工程(2)班小组成员钟文俊(1105012012)谢伟明(1105012041)授课老师纪平完成时间 2014.01.02用MATLAB仿真离散系统差分方程一、设计题目-nf-+-nnnyyn=yf(-()2)()1(5.0.0)25()1+系统输入序列为)f nε=。
n(n)5.0()(二、设计要求1、试用MATLAB绘出输入序列的时域波形;2、用MATLAB求出该系统0~20区间的样值;3、用MATLAB画出系统的零状态响应波形。
三、功能分析差分方程反映的是关于离散变量的取值与变化规律。
通过建立一个或几个离散变量取值所满足的平衡关系,从而建立差分方程。
差分方程就是针对要解决的目标,引路系统或过程中的离散变量,根据实际背景的规律、性质、平衡关系,建立离散变量所满足的平衡关系等式,从而建立差分方程。
通过求出和分析方程的解,或者分析得到方程解的特别性质(平衡性、稳定性、渐近性、振动性周期性等),从而把握这个离散变量的变化过程的规律,进步再结合其他分析,得到原问题的解。
四、设计原理分析1、差分方程定义含有未知函数yt=f(t)以及yt的差分Dyt, D2yt,…的函数方程,称为常差分方程(简称差分方程);出现在差分方程中的差分的最高阶数,称为差分方程的阶。
n阶差分方程的一般形式为F(t,yt,Dyt,…, Dnyt)=0,其中F是t,yt, Dyt,…, Dnyt的已知函数,且Dnyt一定要在方程中出现。
含有两个或两个以上函数值yt,yt+1,…的函数方程,称为(常)差分方程,出现在差分方程中未知函数下标的最大差,称为差分方程的阶。
n阶差分方程的一般形式为F(t,yt,yt+1,…,yt+n)=0,其中F为t,yt,yt+1,…,yt+n的已知函数,且yt和yt+n一定要在差分方程中出现。
2、差分方程的意义与应用差分方程模型有着广泛的应用。
实际上,连续变量可以用离散变量来近似逼近,从而微分方程模型就可以近似于某个差分方程模型。
差分方程模型有着非常广泛的实际背景。
在经济金融保险领域、生物种群数量结构规律分析、疫病和病虫害的控制与防治、遗传规律的研究等许许多多的方面都有着非常重要的的作用。
可以这样讲,只要牵涉到关于变量的规律,性质,就可以适当的用差分方程模型来表现体与分析求解。
3、用MATLAB仿真时用的相关函数说明在用MATLAB仿真离散系统的差分方程时可以用函数y=filter(p,d,x)实现差分方程的仿真,用y=impz(p,d,N)求系统的冲激响应。
3.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=43.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;x2=ones(1,21);y1filter=filter(b1,a1,x2); stem(n,y1filter); title('y1filter_step'); xlabel('x'); ylabel('y');3.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 表示冲击响应输出的序列个数。
五、详细设计1、设计函数思路利用MATLAB 软件实现这个仿真过程,其中应用到filter 函数来实现差分方程的零状态响应,利用impz 函数来实现差分方程0~20区间的样值的取样。
2、理论计算由)1()()2(5.0)1(25.0)(-+=-+--n f n f n y n y n y 两边Z 变换得)1)(()21411)((121---+=+-Z Z F Z Z Z Y ⇒2141214111)(22211+-+=+-+=---Z Z Z Z Z Z Z Z H ⇒jZ K jZ K j Z j Z Z ZZ H 8318183181)83181)(83181(1)(21--++-=--+-+=求得:3129311jK +=,j j K 3129312-+-=⇒)(])8311)(312931()8311)(312931[()(n j jj j j n h nn ε+-+-+-+=再由21)(-=Z Z Z F 得)5.025.0)(5.0()1()(2+--+=Z Z Z Z Z Z Y ⇒j Z K j Z K Z K Z Z Y 831818318121)(321--++-+-= 求得:561=K ,j 31331-j 315-11-2+=K ,j313-31-j 31511-3+=K 求得:)(])8311(3133131511)83181(3133131511)21)(56[()(n j jj j j j n y nn n ε+--+-+-+---+=3、设计过程记录第一次: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这一次的程序代码编写完后仿真得出上面的图形我们发现0~20区间阶跃响应仿真图不对,经过讨论后发现程序中没有写0~20区间阶跃响应的代码,经过完善程序后,进行第二次仿真,如下所示:第二次:a=[1 -0.25 0.5]; %差分方程系数 b=[1 1]; %差分方程系数b1=1; n=0:20; %序列个数 fn=0.5.^n; %输入序列 y1=filter(b,a,fn); %系统零状态响应 y2=impz(b1,a,0:20); %0~20区间阶跃响应 subplot(1,3,1),stem(n,fn,'filled');title('输入序列');grid on subplot(1,3,2),stem(n,y2,'filled');title('0~20区间的样值');grid on subplot(1,3,3),stem(n,y1,'filled');title('零状态响应');grid on102000.10.20.30.40.50.60.70.80.91输入序列01020-0.500.511.520~20区间的样值01020-0.50.511.52零状态响应这次仿真之后我们讨论了得到的波形图,一开始我们以为是正确的,后来发现0~20区间样值的波形图错了,经过上网查阅相关资料才知道是这里的程序代码写错了,经过修改后我们经行第三次仿真实验;第三次:a=[1 -0.25 0.5]; %差分方程系数 b=[1 1]; %差分方程系数 n=0:20; %序列个数 fn=0.5.^n; %输入序列 y1=filter(b,a,fn); %系统零状态响应 y2=impz(b,a,0:20); %0~20区间冲激响应subplot(1,3,1),stem(n,fn,'filled');title('输入序列');grid on subplot(1,3,2),stem(n,y2,'filled');title('0~20区间的样值');grid on subplot(1,3,3),stem(n,y1,'filled');title('零状态响应');grid on102000.10.20.30.40.50.60.70.80.9101020-0.500.5101020-0.50.511.52这一次仿真后经过我们核对,这次的仿真是正确。
六、总结这次的课程设计项目是用MATLAB 仿真实现差分方程,在我们出现过许多错误,这其中主要的错就是在编写0~20区间冲激响应的相关程序代码,导致这一部分在第一次生成仿真图与零状态响应相同;而在第二次仿真时生成的是阶跃响应的波形;然后经过修改在第三次仿真时得出的结果与理论上一致,我们得出正确的结果。
刚开始着手用MATLAB 做课程设计时感觉有点一头雾水,没有方向,不知该从哪开始,后来经过仔细研究,慢慢感觉不太难做,最后也还算是顺利完成课程设计。
在做课程设计之前一定要将课本上的相关知识点理解,因为这是基础,要多看相关的例题,否则相关知识点不清楚会给设计加大难度,浪费很多时间。
102000.10.20.30.40.50.60.70.80.9101020-1-0.500.511.501020-0.50.511.52。