离散时间系统的输入输出描述的编程实现.doc

上传人:wj 文档编号:583487 上传时间:2023-04-29 格式:DOC 页数:20 大小:490KB
下载 相关 举报
离散时间系统的输入输出描述的编程实现.doc_第1页
第1页 / 共20页
离散时间系统的输入输出描述的编程实现.doc_第2页
第2页 / 共20页
离散时间系统的输入输出描述的编程实现.doc_第3页
第3页 / 共20页
离散时间系统的输入输出描述的编程实现.doc_第4页
第4页 / 共20页
离散时间系统的输入输出描述的编程实现.doc_第5页
第5页 / 共20页
离散时间系统的输入输出描述的编程实现.doc_第6页
第6页 / 共20页
离散时间系统的输入输出描述的编程实现.doc_第7页
第7页 / 共20页
离散时间系统的输入输出描述的编程实现.doc_第8页
第8页 / 共20页
离散时间系统的输入输出描述的编程实现.doc_第9页
第9页 / 共20页
离散时间系统的输入输出描述的编程实现.doc_第10页
第10页 / 共20页
离散时间系统的输入输出描述的编程实现.doc_第11页
第11页 / 共20页
离散时间系统的输入输出描述的编程实现.doc_第12页
第12页 / 共20页
离散时间系统的输入输出描述的编程实现.doc_第13页
第13页 / 共20页
离散时间系统的输入输出描述的编程实现.doc_第14页
第14页 / 共20页
离散时间系统的输入输出描述的编程实现.doc_第15页
第15页 / 共20页
离散时间系统的输入输出描述的编程实现.doc_第16页
第16页 / 共20页
离散时间系统的输入输出描述的编程实现.doc_第17页
第17页 / 共20页
离散时间系统的输入输出描述的编程实现.doc_第18页
第18页 / 共20页
离散时间系统的输入输出描述的编程实现.doc_第19页
第19页 / 共20页
离散时间系统的输入输出描述的编程实现.doc_第20页
第20页 / 共20页
亲,该文档总共20页,全部预览完了,如果喜欢就下载吧!
下载资源
资源描述

离散时间系统的输入输出描述的编程实现.doc

《离散时间系统的输入输出描述的编程实现.doc》由会员分享,可在线阅读,更多相关《离散时间系统的输入输出描述的编程实现.doc(20页珍藏版)》请在冰点文库上搜索。

离散时间系统的输入输出描述的编程实现.doc

课程设计任务书

学生姓名:

专业班级:

电信1306班

指导教师:

王虹工作单位:

信息工程学院

题目:

离散时间系统的输入输出描述的编程实现

初始条件:

1.Matlab软件;

2.课程设计辅导资料:

“Matlab语言基础及使用入门”、“信号与系统”、“数字信号处理原理与实现”、“Matlab及在电子信息课程中的应用”等;

3.先修课程:

信号与系统、数字信号处理、Matlab应用实践及信号处理类课程等。

要求完成的主要任务:

(包括课程设计工作量及其技术要求,以及说明书撰写等具体要求)

1.课程设计时间:

1周;

2.课程设计内容:

离散时间系统的输入输出描述的编程实现,具体包括:

已知系统差分方程求任一激励下的响应、系统线性性质的分析讨论、利用卷积运算求响应等;

3.本课程设计统一技术要求:

研读辅导资料对应章节,对选定的设计题目进行理论分析,针对具体设计部分的原理分析、建模、必要的推导和可行性分析,画出程序设计框图,编写程序代码(含注释),上机调试运行程序,记录实验结果(含计算结果和图表),并对实验结果进行分析和总结,按要求进行实验演示和答辩等;

4.课程设计说明书按学校“课程设计工作规范”中的“统一书写格式”撰写,具体包括:

·目录;

·与设计题目相关的理论分析、归纳和总结;

·与设计内容相关的原理分析、建模、推导、可行性分析;

·程序设计框图、程序代码(含注释)、程序运行结果和图表、实验结果分析和总结;

·课程设计的心得体会(至少500字);

·参考文献(不少于5篇);

·其它必要内容等。

时间安排:

1周

指导教师签名:

年月日

系主任(或责任教师)签名:

年月日

目录

1概述 1

1.1离散时间信号及MATLAB实现 1

1.1.1离散时间信号 1

1.1.2离散时间信号的MATLAB表示 1

1.1.3常用的典型序列 1

2设计要求 3

3理论分析 3

3.1 差分方程MATLAB实现 3

3.2 系统的线性性质验证 4

3.3直接卷积原理 4

4程序设计与结果仿真 5

4.1题一 5

4.1.1原理分析 5

4.1.2程序代码与结果 5

4.2题二序列的相乘、相加 10

4.2.1理论分析 10

4.2.2程序代码与结果 11

4.3题三 13

4.3.1理论分析 13

4.3.2程序代码与结果 14

5.心得体会 16

参考文献 17

本科生课程设计成绩评定表 17

1概述

MATLAB是矩阵实验室(MatrixLaboratory)的简称,是美国MathWorks公司出品的商业数学软件,用于算法开发、数据可视化、数据分析以及数值计算的高级技术计算语言和交互式环境,主要包括MATLAB和Simulink两大部分。

随着其功能的日益完善,MATLAB已经发展成为适合多学科,多种工作平台的功能强大型软件。

在国外高校,MATLAB已经成为线性代数,自动控制理论,数理统计,数字信号处理,时间序列分析,动态系统仿真等高级课程的基本教学工具;成为攻读学位的大学生,硕士生,博士生必须掌握的基本技能。

在设计研究单位和工业部门,MATLAB被广泛用于科学研究和解决各种具体问题。

在国内,特别是工程界,MATLAB一定会盛行起来。

可以说,无论你从事工程方面的哪个学科,都能在MATLAB里找到合适的功能。

另一方面,正如同FORTRAN和C等高级语言使人们摆脱了需要直接对计算机硬件资源进行操作一样,被称作为第四代计算机语言的MATLAB,利用其丰富的函数资源,使编程人员从繁琐的程序代码中解放出来。

MATLAB用更直观的,符合人们思维习惯的代码,代替了C和FORTRAN语言的冗长代码,给用户带来的是最直观,最简洁的程序开发环境。

使得其迅速普及,并显示出旺盛的生命力。

1.1离散时间信号及MATLAB实现

1.1.1离散时间信号

在离散时间系统中,信号要用序列来表示,其特点是时间离散,幅值连续。

离散时间信号通常由对连续时间信号进行抽样获得。

离散时间信号表示方法有3种:

列表法、函数表示法、线图法。

1.1.2离散时间信号的MATLAB表示

表示一个序列要用两个元素:

样值和位置。

在MATLAB中用样值向量和位置向量来表示一个序列,要求两个向量长度相等。

例如x(n)={5,6,7,8}[0,3],其MATLAB产生语句为:

n=0:

3;X=[5,6,7,8]。

1.1.3常用的典型序列

(1)单位阶跃序列 

单位阶跃序列定义如下,

在MATLAB中,可以用逻

辑关系表达式产生,在区间[n1,n2]范围内,其产生方式为:

n=n1:

n2;x=((n-n0)>=0)。

具体代码如下:

function[x,n]=stepseq(n1,n2,n0)

n=[n1:

n2];

x=[(n-n0)>=0];

[x,n]=stepseq(-2,8,2);%调用该函数

stem(n,x);%绘制函数图像

同理,单位采样序列的产生方法如下:

function[x,n]=impseq(n1,n2,n0)

n=[n1:

n2];

x=[(n-n0)==0];

调用该函数

[x,n]=impseq(-2,8,2);

stem(n,x)

(2)矩形序列 

矩形序列定义如下:

îí

ì-££=

其中,N为矩形序列的长度。

在MATLAB中,可以用逻辑关系表达式产生,其产生方式为:

x=(((n-n1)>=0)&((n-n2)<=0));其中n1,n2表示取值区间的范围,由这两个值可以确定该矩形序列的长度,公式为N=n2-n1+1。

具体代码如下:

function[x,n]=jx(n1,n2,n0)

n=[n1:

n2];

x=[((n-n1)>=0)&((n-n2)<=0)];

[x,n]=jx(-2,8,2);

stem(n,x)

(3)实指数序列

实指数序列定义为x(n)=a^n,-∞

当n<0,x(n)=0时,上式可表示为x(n)=a^nu(n).例如x(n)=0.8^n,0≤n≤10在MATLAB中可以用n=0:

10;x=0.9.^n;产生。

例如:

n=[0:

10];

x=0.9.^n;%(运算符“.^”)

stem(n,x)

2设计要求

课程设计内容:

离散时间系统的输入输出描述的编程实现。

具体包括:

求系统的输出序列、验证系统的线性性质、求卷积。

设计内容如下:

1.给定因果稳定线性时不变系统的差分方程,对下列输入序列,求出系统的输出序列。

(1),

(2),(3),(4),(5)。

2设系统差分方程为,要求用程序验证系统的线性性质。

3计算下列卷积,并图示各序列及其卷积结果。

3理论分析

3.1差分方程MATLAB实现

在《信号与系统》和《数字信号处理》课程中,我们知道描述线性移不变离散时间系统的数学模型是常系数差分方程,它与系统的结构流图之间可以互相推导。

迭代解法(也称递推解法)是求解差分方程的最简单也最适用的方法,也是实现数字滤波器的一种基本方法。

差分方程通式为:

,x(n)与y(n)分别为系统的激励和响应。

 

离散系统的响应可分为零输入响应分量和零状态响应分量,零输入分量仅由系统的初始状态 y(-1)、y(-2)、…、y(-N) 引起,外激励 x(n)=0 ;而零状态分量仅由外激励x(n)引起,初始状态 y(-1)、y(-2)、…、y(-N) 均为零。

 初始条件是指计算差分方程所需的初始值 y(0)、y

(1)、…、y(N-1)。

如果已知 y(-1)、y(-2)、…、y(-N),欲求y(0)、y

(1)、…、y(N-1),可利用迭代法逐一导出。

这样我们可以由给定的差分方程以及已知的初始状态找到所需的初始值(包括零输入初始值、零状态初始值、全响应初始值),进而求出响应。

也可以利用系统单位冲激响应h(n)与输入信号x(n)的离散卷积求出。

MATLAB以函数filter(num , den , x),来计算在给定输入和差分方程系数时求差分方程的数值解。

num,den分别为系统方程的系数向量。

X是输入序列。

3.2系统的线性性质验证

线性系统是一个既具有分解特性,又具有零状态线性和零输入线性的系统,线性性质是线性系统所具有的本质特性,线性离散系统的数学模型是线性差分方程。

即满足叠加原理的系统称为线性系统。

线性性质实际上包含了可加性和齐次性两个性质。

设y1(n)和y2(n)分别是系统对输入x1(n)和x2(n)的响应,系统的激励x(n)与响应y(n)之间的关系可简记为y(n)=T[x(n)]即y1(n)=T[x1(n)]和y2(n) = T[x2(n)],若满足:

a1 y1(n) + a2 y2(n) = T[a1 x1(n) + a2 x2(n)] = a1 T[x1(n)] + a2 T[x2(n)]

则此系统称为线性系统。

验证系统的线性性质,即验证上式是否成立。

3.3直接卷积原理

1.离散时间序列f1(k)和f2(k)的卷积和定义:

2.在离散信号与系统分析中有两个与卷积和相关的重要结论:

(1),即离散序列可分解为一系列幅度由f(k)决定的单位序列δ(k)及其平移序列之积。

(2)对线性时不变系统,设其输入序列为f(k),单位响应为h(k),其零状态响应为y(k),则有:

3.在Matlab中可以通过直接调用conv.m用来实现两个离散序列的线性卷积。

其调用格式是:

y=conv(x,h)

若x的长度为N,h的长度为M,则y的长度L=N+M-1。

4MATLAB程序设计与结果仿真

4.1题一

题目:

给定因果稳定线性时不变系统的差分方程,对下列输入序列,求出系统的输出序列。

(1),

(2),(3),(4),(5)。

4.1.1原理分析

MATLAB以函数filter(num,den,x),来计算在给定输入和差分方程系数时求差分方程的数值解。

num,den分别为系统方程的系数向量。

X是输入序列。

只需改变输入序列,便可以得到不同的输出。

由于题目中没有给定差分方程,设

该方程为:

2y[n]-1.7y[n-1]+1.1y[n-2]=2x[n],则num=[2];den=[2–1.71.1];

4.1.2程序代码与结果

第一小题代码如下:

n=[-20:

100];

num=[2];

den=[2-1.71.1];

x=impseq(-10,100,0);%x(n)为冲击函数

h=filter(num,den,x);%使用函数filter()求输出

stem(n,h)%绘制离散序列数据

xlabel('n');ylabel('y(n)');

title('响应y(n)电信1306胡容');

系统输出函数y(n)的图像如图4.1所示

4.1输出函数

第二小题代码如下:

n=[-20:

100];

num=[2];

den=[2-1.71.1];

x=impseq(-20,100,10);

h=filter(num,den,x);%使用函数filter()求输出

stem(n,h)

xlabel('n');ylabel('y(n)');

title('响应y(n)电信1306胡容');

系统输出函数y(n)的图像如图4.2所示。

图4.2系统输出响应

第三小题代码如下:

n=[-20:

100];

num=[2];

den=[2-1.71.1];

x=stepseq(-20,100,0);

h=filter(num,den,x);%使用函数filter()求输出

stem(n,h)

xlabel('n');ylabel('y(n)');

title('响应y(n)电信1306胡容');

系统输出函数y(n)的图像如图4.3所示。

图4.3系统输出响应图

第四小题代码如下:

n=[-20:

100];

num=[2];

den=[2-1.71.1];

x=stepseq(-20,100,0)-stepseq(-20,100,32);%两个阶跃序列之差

h=filter(num,den,x);%使用函数filter()求输出

stem(n,h)

xlabel('n');ylabel('y(n)');

title('响应y(n)电信1306胡容');

系统输出函数y(n)的图像如图4.4所示。

图4.4系统输出响应图

第五小题代码如下:

n=[-20:

100];

num=[2];

den=[2-1.71.1];

x0=stepseq(-20,100,0)-stepseq(-20,100,32);

x1=exp(pi*n*j/8);

x=x1.*x0;%对应项之间相乘,即点乘

h=filter(num,den,x);%使用函数filter()求输出

stem(n,h)

xlabel('n');ylabel('y(n)');

title('响应y(n)电信1306胡容');

系统输出函数y(n)的图像如图4.5所示。

图4.5系统输出函数

题目小结:

通过本题我们学会了如何在给定因果稳定线性时不变系统的差分方程情况下对给定的输入序列求输出序列。

4.2题二序列的相乘、相加

题目:

设系统差分方程为,要求用程序验证系统的线性性质。

4.2.1理论分析

产生两种输入序列,分别乘以常数后:

1.分别激励系统,再求输出之和;

2.先相加,再激励系统求输出;

对两个结果进行比较,方法是求它们之差,按误差的绝对值是否极小进行判断。

如果二者误差绝对值极小则可忽略不计,即两序列为线性序列。

4.2.2程序代码与结果

本题MATLAB代码如下:

N=64;n=0:

N-1;m=20;

num=[1];den=[1,-0.8];%设定系统参数num,den

x1=0.9.^n; %产生输入信号x1(n)

x=[(n>=0)&(n<32)];

x1=x1.*x;%点乘

y1=filter(num,den,x1); %对x1(n)的响应y1(n)

x2=[(n-m)==0];

y2=filter(num,den,x2); %对x2(n)的响应y2(n)

x3=7*x1+2*x2;

y3=filter(num,den,x3); %对5x1(n)+3x2(n)的响应y3(n)

y=7*y1+2*y2;%y(n)=5y1(n)+3y2(n)

subplot(2,2,1);stem(n,y1,'.');line([0,N],[0,0])

axis([0,N,min(y1),max(y1)]);

ylabel('y1(n)]')

title(’电信1306胡容’)

subplot(2,2,2);stem(n,y2,'.');line([0,N],[0,0])

axis([0,N,min(y2),max(y2)]);

ylabel('y2(n)]')

title(’电信1306胡容’)

subplot(2,2,3);stem(n,y3,'.');line([0,N],[0,0])

axis([0,N,min(y3),max(y3)]);

xlabel('n');ylabel('y3(n)]')

title(’电信1306胡容’)

subplot(2,2,4);stem(n,y,'.');line([0,N],[0,0])

axis([0,N,min(y),max(y)]);

xlabel('n');ylabel('y(n))')

title(’电信1306胡容’)

e=y-y3,figure;stem(e)

运行结果如图4.6和4.7所示。

图4.6各输出响应图像

由图4.6可以看出y(n)和y3(n)的函数图像几乎一模一样,由图4.7可以看出y(n)与y3(n)之差非常小,验证了y1(n)和y3(n)满足可加性和齐次性,所以该系统是线性的。

图4.7序列e的图像

4.3题三

题目:

计算下列卷积,并图示各序列及其卷积结果。

4.3.1理论分析

卷积的计算

计算x1(n)和x2(n)的线性卷积的FFT算法可由下面步骤实现:

¨计算X1(k)=FFT[x1(n)];

¨计算X2(k)=FFT[x2(n)];

¨计算Y(k)=X1(k)X2(k);

¨计算x1(n)*x2(n)=IFFT[Y(k)].

在Matlab自带的系统函数中,Conv()可以很好的完成两个有限长序列的卷积运算,特别是对于N值较小的向量,是十分有效的。

4.3.2程序代码与结果

题二MATLAB代码如下:

>>Nx=20;Nh=10;m=5;%设定Nx,Nh和位移值m

n=0:

Nx-1;

x1=(0.9).^n;%产生x1(n)

x2=zeros(1,Nx+m);

fork=m+1:

m+Nx%产生x2(n)

x2(k)=x1(k-m);

end

nh=0:

Nh-1;h1=ones(1,Nh);%产生h1(n)

h2=h1;%产生h2(n)

y1=conv(x1,h1);%计算y1(n)=x1(n)*h1(n)

y2=conv(x2,h2);%计算y2(n)=x2(n)*h2(n)

subplot(321),

stem(x1,'.')

ylabel('x1')

title(’电信1306胡容’)

subplot(323),

stem(h1,'.')

ylabel('h1')

title(’电信1306胡容’)

subplot(325),

stem(y1,'.')

title(’电信1306胡容’)

subplot(322),

stem(x2,'.')

ylabel('x2')

title(’电信1306胡容’)

subplot(324),

stem(h2,'.')

ylabel('h2')

title(’电信1306胡容’)

subplot(326)

stem(y2,'.')

ylabel('y2')

title(’电信1306胡容’)

运行结果如图4.8所示

图4.8序列卷积结果图

5.心得体会

在前几次课设和实验中我们就认识到了Matlab的强大功能,本次信号分析与处理次课程设计也是利用它完成的。

Matlab作为一个功能强大,运算效率相当高的数学工具软件,经过了多年发展,目前几乎可以解决科学计算中的任何问题。

作为一种以数组与矩阵为核心的处理工具,Matlab还具有与高级语言相似的编程特性,在可视化方面,Matlab提供了图形用户界面,使得用户可以进行可视化编程。

可以这么说,Matlab把数据结构、编程特性与图形用户界面完美的结合在一起。

这次的课程设计运用了很多以前课堂中学习到的理论知识,使我对数字信号处理方面的知识有了进一步的加深。

如验证系统的线性性质,卷积的运算。

通过这次课程设计,我以前学习到的理论知识得到了进一步的了解和深入,我想这就是理论与实践相结合的作用吧!

单独的理论学习是比较枯燥的,这种模式不仅加深了我们的知识,而且增强了我们的动手能力,整个的过程中,也非常的有趣,使我对数字信号处理的兴趣大大提高。

对于我们电子信息工程专业而言,数字信号处理是一门很重要的学科,它要求在一定的理解和计算的基础上掌握其内容,领悟其要旨。

通过课程设计的学习,可以在掌握一定的理论知识的基础上通过实践加深理解,使得理论知识的学习在实践之中得到升华。

对于我个人来说,这是一次很好的学习和实践的机会。

Matlab有很多的库函数,这为我们开发学习提供了一个非常方便的平台。

同时,我们可以根据自己的需要,建立新的函数,然后储存起来,方便以后的使用。

课程设计,让我们学会了思考问题,不单单是依靠课本知识,还需要联系实际,理论需要结合实践才能发挥最大的作用。

我们在课程设计的过程中,发现问题,并找出问题的原因,还需要自己动手将问题解决,这极大的调动了我们的积极性,扩展了我们的思维,对待出现的问题,我们学会了不逃避,而是努力将其解决,这对我们今后的学习生活有着重大影响。

参考文献

[1] 薛山.MATLAB基础教程.北京:

清华大学出版社,2011

[2]艾冬梅编.MATLAB与数学实验[M].北京:

机械公业出版社,2010

[3] 高会生.MATLAB实用教程.北京:

电子工业出版社,2011

[4]王正盛编.MATLAB与科学计算[M].北京:

国防工业出版社,2011

[5] 张琨.MATLAB2010从入门到精通.北京:

电子工业出版社,2011

本科生课程设计成绩评定表

姓名

性别

专业、班级

课程设计题目:

课程设计答辩或质疑记录:

成绩评定依据:

最终评定成绩(以优、良、中、及格、不及格评定)

指导教师签字:

年月日

展开阅读全文
相关资源
猜你喜欢
相关搜索
资源标签

当前位置:首页 > 农林牧渔 > 林学

copyright@ 2008-2023 冰点文库 网站版权所有

经营许可证编号:鄂ICP备19020893号-2