资源描述:
《实验三、 连续时间系统的时域分析.doc》由会员上传分享,免费在线阅读,更多相关内容在行业资料-天天文库。
1、等级:实验报告课程名称:MATLAB应用基础姓名:游金涛学号:200808002304院(系):计算机与通信工程系专业、班级: 通信0803班任课教师:李玲香实验三、连续时间系统的时域分析一、实验目的1.深刻理解卷积运算,掌握离散线性卷积、连续线性卷积的计算方法;2.加深对线性时不变系统中零状态响应概念的理解,掌握其求解方法;3.掌握给定连续系统的冲激响应和阶跃响应。二、实验原理1.线性时不变(LTI)连续时间系统用常系数线性微分方程进行描述,系统的零状态响应就是在系统初始状态为零条件下微分方程的解。MATLAB控制系统工具箱提供了一个lsim函数来求解连续时间系统的零状态响应。设系统方程
2、为:该方程左边、右边的系数向量分别为,,所对应的系统模型sys可借助MATLAB中的tf函数得到:sys=tf(b,a).这样,系统的零状态响应为:y=lsim(sys,f,t),其中f是输入信号向量,t是与f对应的时间变量。2.连续系统的冲激响应、阶跃响应分别是输入信号为和所对应的零状态响应。MATLAB控制系统工具箱专门提供了两个函数求解连续系统的冲激响应和阶跃响应。冲激响应:y=impulse(sys,t);阶跃响应:y=step(sys,t).其中sys,t的含义同上。3.卷积是信号与系统中一个最基本、也是最重要的概念之一。在时域中,对于LTI连续时间系统,其零状态响应等于输入信号
3、与系统冲激响应的卷积;而利用卷积定理,这种关系又对应频域中的乘积。我们可以用离散卷积来代替连续卷积,只要取样时间间隔足够小时,就可得到满意的效果。MATLAB信号处理工具箱提供了一个计算两个离散序列卷积和的函数conv。设向量a、b代表待卷积的两个序列,则c=conv(a,b)就是a与b卷积后得到的新序列。我们知道两个序列卷积以后,一般而言所得新序列的时间范围、序列长度都会发生变化。例如设f1(n)长度为5,-3≤n≤1;f2(n)长度为7,2≤n≤8;则卷积后得到的新序列长度为11,-1≤n≤9。但是用conv函数求出卷积后没有给出新序列所对应的时间变量。为此,我们在下面的程序示例中给出
4、了一个函数文件dconv,它在完成conv函数功能的同时,还产生了一个对应新序列的时间变量。4.对于连续卷积令(为整数),则(*)由(*)式,连续卷积积分可由离散卷积和近似代替,只要取样时间间隔足够小,就可以得到高精度卷积积分的数值计算。在示例3中给出了一个函数文件cconv来完成该功能。三、实验内容与步骤1.已知系统的微分方程为:。计算信号通过系统的零状态响应、冲激响应和阶跃响应,并画出相应的图形。程序代码及截图如下:a=[122];b=[1];sys=tf(b,a);td=0.0001;t=0:td:10;f=exp(-t);y=lsim(sys,f,t);subplot(131);p
5、lot(t,y);subplot(132);impulse(sys,t);subplot(133);step(sys,t);2.用MATLAB计算如下两序列的卷积和,绘出它们的时域波形。程序代码及截图如下:f1=[121];n1=[012];f2=ones(1,4);n2=-2:1;f=conv(f1,f2)n0=n1(1)+n2(1);n3=length(n1)+length(n2)-1;n=n0:n0+n3-1;subplot(131);stem(n1,f1);subplot(132);stem(n2,f2);subplot(133);stem(n,f);运行结果:f=1344313.
6、编程实现如下图所示的两个波形;并利用cconv函数计算这两个信号的卷积、画出卷积后的波形。程序代码及截图如下:1.%函数文件dconv.mfunctionn=dconv(n1,n2,p)n0=n1(1)+n2(1);n3=length(n1)+length(n2)-2;n=n0:p:n0+n3*p;2.%函数文件cconv.mfunction[f,k]=cconv(f1,f2,k1,k2,p)f1=2;f2=1;k1=-1:0.01:1;k2=-2:0.01:2;p=0.01;f=conv(f1,f2);f=f*p;k0=k1(1)+k2(1);k3=length(f1)+length(f
7、2)-2;k=k0:p:k0+k3*p;k=dconv(k1,k2,p)subplot(3,3,1)plot(k1,f1)title('f1(t)')xlabel('t')ylabel('f1(t)')subplot(3,3,4)plot(k2,f2)title('f2(t)')xlabel('t')ylabel('f2(t)')subplot(3,3,7)plot(k,f);h=get(gca,'position');