离散时间系统的输入输出描述的编程实现Word文档下载推荐.docx
- 文档编号:19005662
- 上传时间:2023-01-03
- 格式:DOCX
- 页数:19
- 大小:394.66KB
离散时间系统的输入输出描述的编程实现Word文档下载推荐.docx
《离散时间系统的输入输出描述的编程实现Word文档下载推荐.docx》由会员分享,可在线阅读,更多相关《离散时间系统的输入输出描述的编程实现Word文档下载推荐.docx(19页珍藏版)》请在冰豆网上搜索。
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:
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)
x=[((n-n1)>
=0)];
[x,n]=jx(-2,8,2);
(3)实指数序列
实指数序列定义为x(n)=a^n,-∞<
n<
+∞,式中a为实数。
当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];
%(运算符“.^”)
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(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)
x2(n)]
T[x1(n)]
T[x2(n)]
则此系统称为线性系统。
验证系统的线性性质,即验证上式是否成立。
3.3直接卷积原理
1.离散时间序列f1(k)和f2(k)的卷积和定义:
2.在离散信号与系统分析中有两个与卷积和相关的重要结论:
即离散序列可分解为一系列幅度由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题一
题目:
给定因果稳定线性时不变系统的差分方程
4.1.1原理分析
MATLAB以函数filter(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输出函数
第二小题代码如下:
x=impseq(-20,100,10);
stem(n,h)
系统输出函数y(n)的图像如图4.2所示。
图4.2系统输出响应
第三小题代码如下:
x=stepseq(-20,100,0);
系统输出函数y(n)的图像如图4.3所示。
图4.3系统输出响应图
第四小题代码如下:
x=stepseq(-20,100,0)-stepseq(-20,100,32);
%两个阶跃序列之差
系统输出函数y(n)的图像如图4.4所示。
图4.4系统输出响应图
第五小题代码如下:
x0=stepseq(-20,100,0)-stepseq(-20,100,32);
x1=exp(pi*n*j/8);
x=x1.*x0;
%对应项之间相乘,即点乘
系统输出函数y(n)的图像如图4.5所示。
图4.5系统输出函数
题目小结:
通过本题我们学会了如何在给定因果稳定线性时不变系统的差分方程情况下对给定的输入序列求输出序列。
4.2题二序列的相乘、相加
设系统差分方程为
4.2.1理论分析
产生两种输入序列,分别乘以常数后:
1.分别激励系统,再求输出之和;
2.先相加,再激励系统求输出;
对两个结果进行比较,方法是求它们之差,按误差的绝对值是否极小进行判断。
如果二者误差绝对值极小则可忽略不计,即两序列为线性序列。
4.2.2程序代码与结果
本题MATLAB代码如下:
N=64;
N-1;
m=20;
num=[1];
den=[1,-0.8];
%设定系统参数num,den
x1=0.9.^n;
%产生输入信号x1(n)
x=[(n>
(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,'
axis([0,N,min(y2),max(y2)]);
y2(n)]'
subplot(2,2,3);
stem(n,y3,'
axis([0,N,min(y3),max(y3)]);
y3(n)]'
subplot(2,2,4);
stem(n,y,'
axis([0,N,min(y),max(y)]);
y(n))'
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
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,'
x1'
subplot(323),
stem(h1,'
h1'
subplot(325),
stem(y1,'
subplot(322),
stem(x2,'
x2'
subplot(324),
stem(h2,'
h2'
subplot(326)
stem(y2,'
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从入门到精通.北京:
本科生课程设计成绩评定表
姓名
性别
专业、班级
课程设计题目:
课程设计答辩或质疑记录:
成绩评定依据:
最终评定成绩(以优、良、中、及格、不及格评定)
指导教师签字:
年月日
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- 离散 时间 系统 输入输出 描述 编程 实现