离散时间系统的输入输出描述的编程实现概论.docx
《离散时间系统的输入输出描述的编程实现概论.docx》由会员分享,可在线阅读,更多相关《离散时间系统的输入输出描述的编程实现概论.docx(18页珍藏版)》请在冰豆网上搜索。
离散时间系统的输入输出描述的编程实现概论
课程设计任务书
学生姓名:
专业班级:
电信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);%使