您好,欢迎访问三七文档
当前位置:首页 > 商业/管理/HR > 管理学资料 > 离散时间系统时域分析与仿真
郑州航空工业管理学院《电子信息系统仿真》课程设计2014级电子信息工程专业1413083班级题目离散时间系统时域分析与仿真姓名学号二О一六年十一月月二十五日一、MATLAB软件简介MATLAB是美国MathWorks公司出品的商业数学软件,用于算法开发、数据可视化、数据分析以及数值计算的高级技术计算语言和交互式环境,主要包括MATLAB和Simulink两大部分。二、理论分析1、实验原理离散时间系统其输入、输出关系可用以下差分方程描述:MkkNkkknxpknyd00][][当输入信号为冲激信号时,系统的输出记为系统单位冲激响应][][nhn,则系统响应为如下的卷积计算式:mmnhmxnhnxny][][][][][当h[n]是有限长度的(n:[0,M])时,称系统为FIR系统;反之,称系统为IIR系统。在MATLAB中,可以用函数y=Filter(p,d,x)求解差分方程,也可以用函数y=Conv(x,h)计算卷积。2、时不变系统就是系统的参数不随时间而变化,即不管输入信号作用的时间先后,输出信号响应的形状均相同,仅是从出现的时间不同。用数学表示为T[x(n)]=y[n]则T[x(n-n0)]=y[n-n0],这说明序列x(n)先移位后进行变换与它先进行变换后再移位是等效的。3、线性时不变系统既满足叠加原理又具有时不变特性,它可以用单位脉冲响应来表示。单位脉冲响应是输入端为单位脉冲序列时的系统输出,一般表示为h(n),即h(n)=T[δ(n)]。任一输入序列x(n)的响应y(n)=T[x(n)]=T[δ(n-k)];由于系统是线性的,所以上式可以写成y(n)=T[δ(n-k)];又由于系统是时不变的,即有T[δ(n-k)]=h(n-k);从而得y(n)=h(n-k)=x(n)*h(n);这个公式称为离散卷积,用“*”表示。4、线性时不变系统的性质(1)、齐次性若激励f(t)产生的响应为y(t),则激励Af(t)产生的响应即为Ay(t),此性质即为齐次性。其中A为任意常数。f(t)系统y(t),Af(t)系统Ay(t)(2)、叠加性若激励f1(t)与f2(t)产生的响应分别为y1(t),y2(t),则激励f1(t)+f2(t)产生的响应即为y1(t)+y2(t),此性质称为叠加性。(3)、线性若激励f1(t)与f2(t)产生的响应分别为y1(t),y2(t),则激励A1f1(t)+A2f2(t)产生的响应即为A1y1(t)+A2y2(t),此性质称为线性。(4)、时不变性若激励f(t)产生的响应为y(t),则激励f(t-t0)产生的响应即为y(t-t0),此性质称为不变性,也称定常性或延迟性。它说明,当激励f(t)延迟时间t0时,其响应y(t)也延迟时间t0,且波形不变。(5)、微分性若激励f(t)产生的响应为y(t),则激励f'(t)产生的响应即y’(t),此性质即为微分性。(6)、积分性若激励f(t)产生的响应为y(t),则激励f(t)的积分产生的响应即为y(t)的积分。此性质称为积分性。三、MATLAB数值运算功能MATLAB的强大数值计算功能使其在诸多数学计算软件中傲视群雄,它是MATLAB软件的基础。下面将介绍运用MATLAB计算卷积和冲激响应。(1)卷积求解:由于系统的零状态响应是激励与系统的单位取样响应的卷积,因此,卷积运算在离散时间信号处理领域被广泛应用。MATLAB求离散时间信号的卷积和命令为conv,其调用格式如下:y=conv(x,h)其中:x与h表示离散时间信号值的向量;y为卷积结果。用MATLAB进行卷积运算时,无法实现无限的累加,只能计算时限信号的卷积。一系统的单位取样响应为,用MATLAB求当激励信号为x(n)=u(n)-u(n-4)时,系统的零状态响应。在MATLAB中可通过卷积求解零状态响应,即x(n)*h(n)。上述系统描述h(n)向量的长度至少为8,描述x(n)向量的长度至少为4,因此为了图形完整美观,将h(n)向量和x(n)加上一些附加的零值。其实现的MATLAB程序代码如下:clearall;nx=-1:5;%x(n)向量显示范围(添加了附加的零值)nh=-2:10;%h(n)向量显示范围(添加了附加的零值)x=uDT(nx)-uDT(nx-4);h=0.8.^nh.*(uDT(nh)-uDT(nh-8));y=conv(x,h);ny1=nx(1)+nh(1);%卷积结果起始点%卷积结果长度为两序列长度之和减1,即0到(length(nx)+length(nh)-2)%因此卷积结果的时间范围是将上述长度加上起始点的偏移值ny=ny1+(0:(length(nx)+length(nh)-2));subplot(3,1,1);stem(nx,x,'fill');gridon;xlabel('n');title('x(n)');axis([-41603]);subplot(3,1,2);stem(nh,h,'fill');gridon;xlabel('n');title('h(n)');axis([-41603]);subplot(3,1,3);stem(ny,y,'fill');gridon;xlabel('n');title('y(n)=x(n)*h(n)');axis([-41603]);其波形如下图:卷积结果(2)冲激响应求解在连续线性时域系统中,冲激响应和阶跃响应是系统特性的描述,对它们的分析是线性系统中极为重要的问题。输入为单位冲激响应函数δ(t)所引起的零状态响应称为单位冲激响应,简称为冲激响应,用h(t)表示;输入为单位阶跃函数u(t)所引起的零状态响应称为单位阶跃响应,简称为阶跃响应,用g(t)表示。在MATLAB中,对于连续时域系统的冲激响应和阶跃响应的数值解,可分别利用控制系统工具箱提供的函数impulse和step来求解。其调用格式如下:y=impulse(sys,t)y=step(sys,t)其中:t表示计算系统响应的时间抽样点向量,sys表示线性时域系统模型。已知一连续时域系统的微分方程如下:下面用MATLAB命令绘出0≤t≤4范围内系统的冲激响应h(t)和阶跃响应g(t)。其实现的MATLAB代码如下:clearall;t=0:0.001:4;sys=tf([1,16],[1,2,32]);h=impulse(sys,t);g=step(sys,t);subplot(2,1,1);plot(t,h);gridon;xlabel('时间/s');ylabel('h(t)');title('冲激响应');subplot(2,1,2);plot(t,g);gridon;xlabel('时间/s');ylabel('g(t)');title('阶跃响应');其仿真波形如下图:冲激响应和阶跃响应波形四、离散线性系统时域分析与仿真1、线性离散时间信号的基本运算对离散时间序列实行基本运算可得到新的序列,这些基本运算主要包括加、减、乘、除、移位和反折等。两个序列的加减乘除是对应离散样点值的加减乘除,因此,可通过MATLAB点乘和点除、序列移位和反折来实现,与连续时间信号处理方法基本一样。下面列举例子来说明。用MATLAB命令绘出下列离散时间序列的波形图。设a=0.8,N=8。其实现的MATLAB程序代码如下:clearall;a=0.8;N=8;n=-12:1:12;x=a.^n.*(uDT(n)-uDT(n-N));n1=n;n2=n1+3;n3=n1-2;n4=-n1;subplot(4,1,1);stem(n1,x,'fill');gridon;axis([-151501]);xlabel('(a)x1(n)');subplot(4,1,2);stem(n2,x,'fill');gridon;axis([-151501]);xlabel('(b)x2(n)');subplot(4,1,3);stem(n3,x,'fill');gridon;axis([-151501]);xlabel('(c)x3(n)');subplot(4,1,4);stem(n4,x,'fill');gridon;axis([-151501]);xlabel('(d)x4(n)');程序在运行过程中,调用到自定义的冲激序列uDT.m文件,其源代码如下:functiony=uDT(n)y=n=0;其仿真波形如下图:离散序列波形图2、线性离散系统分析(1)零状态响应离散线性时域系统可用下式表示,即MATLAB中的函数filter可对上式差分方程在指定时间范围内的输入序列所产生的响应进行求解。函数filter的调用格式如:y=filter(b,a,x)其中:x为输入的离散序列;y为输出的离散序列;y的长度和x的长度一样;b和a分别为差分方程右端与左端的系数向量。一离散线性时域系统的差分方程如下:下面用MATLAB命令绘出当激励信号为时,该系统的零状态响应。其实现的MATLAB程序代码如下:clearall;a=[3-42];b=[12];n=0:30;x=(1/2).^n;y=filter(b,a,x);stem(n,y,'fill');gridon;xlabel('n');title('系统零状态响应y(n)');其仿真波形如下图:图3零状态响应(2)单位取样响应系统的单位取样响应定义为系统在δ(t)激励下系统的零状态响应,用h(n)表示。MATLAB求解单位取样响应可利用函数filter,另一种求单位取样响应的方法是利用控制系统工具箱提供的函数impz来实现。有一离散线性系统的差分方程如下:下面利用MATLAB的impz函数绘出该系统的单位取样响应。其实现的程序代码如下:clearall;a=[3-42];b=[12];n=0:30;impz(b,a,30);gridon;title('系统单位取样响应h(n)');其仿真波形如下图:图4单位取样响应(3)卷积和运算由于系统的零状态响应是激励与系统的单位取样响应的卷积,因此,卷积运算在离散时间信号处理领域被广泛应用。MATLAB求离散时间信号的卷积和命令为conv,其调用格式如下:y=conv(x,h)其中:x与h表示离散时间信号值的向量;y为卷积结果。用MATLAB进行卷积运算时,无法实现无限的累加,只能计算时限信号的卷积。一系统的单位取样响应为,用MATLAB求当激励信号为x(n)=u(n)-u(n-4)时,系统的零状态响应。在MATLAB中可通过卷积求解零状态响应,即x(n)*h(n)。上述系统描述h(n)向量的长度至少为8,描述x(n)向量的长度至少为4,因此为了图形完整美观,将h(n)向量和x(n)加上一些附加的零值。其实现的MATLAB程序代码如下:clearall;nx=-1:5;%x(n)向量显示范围(添加了附加的零值)nh=-2:10;%h(n)向量显示范围(添加了附加的零值)x=uDT(nx)-uDT(nx-4);h=0.8.^nh.*(uDT(nh)-uDT(nh-8));y=conv(x,h);ny1=nx(1)+nh(1);%卷积结果起始点%卷积结果长度为两序列长度之和减1,即0到(length(nx)+length(nh)-2)%因此卷积结果的时间范围是将上述长度加上起始点的偏移值ny=ny1+(0:(length(nx)+length(nh)-2));subplot(3,1,1);stem(nx,x,'fill');gridon;xlabel('n');title('x(n)');axis([-41603]);subplot(3,1,2);stem(nh,h,'fill');gridon;xlabel('n');title('h(n)');axis([-41603]);subplot(3,1,3);stem(ny,y,'fill');gridon;xlabel('n');title('y(n)=x(n)*h(n)');axis([-41603]);其波形如下图:卷积
本文标题:离散时间系统时域分析与仿真
链接地址:https://www.777doc.com/doc-4331715 .html