
本文共 3459 字,大约阅读时间需要 11 分钟。
目录
一、实验目的
1.学会用MATLAB求解连续系统的零状态响应;
2. 学会用MATLAB求解冲激响应及阶跃响应; 3.学会用MATLAB实现连续信号卷积的方法;二、实验原理
LTI连续系统数学模型为
(1)连续系统的冲激响应h(t)的求取可调用impulse(b, a)实现。其中a=[a2 a1 a0]是响应y侧系数向量,b=[b2 b1 b0]是激励f侧系数向量。
(2)连续系统的零状态响应yzs(t)的求取可调用lsim(b, a, f, t)实现。其中f是激励向量,t表示计算连续系统响应的时间抽样点向量,a、b向量同上。 (3)连续系统的零状态响应yzf(t)的求取也可调用conv(f, h)实现,也就是下面将要介绍的连续信号卷积的近似计算。1.连续时间系统零状态响应的数值计算
在MATLAB中,控制系统工具箱提供了一个用于求解零初始条件微分方程数值解的函数lsim。其调用格式
y=lsim(sys,f,t) 式中,t表示计算系统响应的抽样点向量,f是系统输入信号向量,sys是LTI系统模型,表示微分方程,差分方程或状态方程。其调用格式 sys=tf(b,a) 式中,b和a分别是微分方程的右端和左端系数向量。例如
用 获得其LTI模型。

ts=0; te=5;dt=0.01; sys=tf([1],[1,2,100]); t=ts:dt:te; f=10*sin(2*pi*t); y=lsim(sys,f,t); plot(t,y); xlabel('Time(sec)'); ylabel('y(t)');
2.连续时间系统冲激响应和阶跃响应的求解
在MATLAB中,对于连续LTI系统的冲激响应和阶跃响应,可分别用控制系统工具箱提供的函数impluse和step来求解。其调用格式为
y=impluse(sys,t) , y=step(sys,t) 式中,t表示计算系统响应的抽样点向量,sys是LTI系统模型。 例2-2已知某LTI系统的微分方程 y’’(t)+ 2y’(t)+100y(t)=10f(t) 求系统的冲激响应和阶跃响应的波形. 解:ts=0;te=5;dt=0.01; sys=tf([10],[1,2,100]);t=ts:dt:te;h=impulse(sys,t);figure;plot(t,h); xlabel('Time(sec)'); ylabel('h(t)');g=step(sys,t);figure;plot(t,g); xlabel('Time(sec)');ylabel('g(t)');
3. 用MATLAB实现连续时间信号的卷积
信号的卷积运算需调用MATLAB的conv( )函数近似计算信号的卷积积分。连续信号的
卷积积分定义是
如果对连续信号f1(t)和f2(t)进行等时间间隔均匀抽样,则f1(t)和f2(t)分别变为离散时间信号和
。其中,
为整数。当
足够小时,
和
为连续时间信号f1(t)和f2(t)。因此

采用数值计算时,只求当时卷积积分f(t) 的值,其中,n为整数

其中,实际就是离散序列
和
的卷积和。当
足够小时,序列
就是连续信号的数值近似







dt=0.01; t=-1:dt:2.5;f1=heaviside(t)-heaviside(t-2);f2=exp(-3*t).*heaviside(t);f=conv(f1,f2)*dt; n=length(f); tt=(0:n-1)*dt-2;subplot(221), plot(t,f1), grid on;axis([-1,2.5,-0.2,1.2]); title('f1(t)'); xlabel('t')subplot(222), plot(t,f2), grid on;axis([-1,2.5,-0.2,1.2]); title('f2(t)'); xlabel('t')subplot(223), plot(tt,f), grid on;title('f(t)=f1(t)*f2(t)'); xlabel('t')
由于f1(t)和f2(t)的时间范围都是从t = -1开始,所以卷积结果的时间范围从 t = -2开始.
三、实验内容
1. 验证实验原理中所述的相关程序
2. 已知描述系统的微分方程和激励信号f(t)如下,试用解析法求系统的零状态响应y(t),并用MATLAB绘出系统零状态响应的时域仿真波形,验证结果是否相同

程序如下:
a = [1,3,6];n = length(a)-1;Y0 = [0,10];b = [1,6,8];te = 0;dt = 0.001;ts = 9;t = te:dt:ts;f = sin(2*t)+cos(5*t);p = roots(a); %求出其次解V = rot90(vander(p)); %生成2*2矩阵并旋转90度c = V\Y0'; %求出待定系数r1,r2的值y1 = zeros(1,length(t)); %建立一个1*length(t)的矩阵for k = 1:n ,y1 = y1+c(k)*exp(p(k)*t);end %求出冲激响应dt = ts/(length(t)-1);[r,p,k] = residue(b,a);h = r(1)*exp(p(1)*t)+r(2)*exp(p(1)*t);y2 = conv(f,h)*dt;subplot(2,1,1);plot(t,y1);grid ontitle('零输入响应')xlabel('t');ylabel('y1');subplot(2,1,2);plot(t,y2(1:length(t)));grid ontitle('零状态响应')xlabel('t');ylabel('y2');
运行结果如下:

3.已知两连续时间信号如下图所示,试用MATLAB求f(t)=f1(t)*f2(t),并绘出f(t)的时域波形图。(设定取样时间间隔为p)

程序如下:
ts = -3;dt = 0.01;te = 3;t = ts:dt:te;f1 = 2*(heaviside(t+1)-heaviside(t-1));f2 = heaviside(t+2)-heaviside(t-2);f = conv(f1,f2)*dt;n = length(f);tt = (0:n-1)*dt-2;axis([-3,3,-2,2]);subplot(1,3,1);plot(t,f1);grid ontitle('f1')xlabel('t'); axis([-3,3,-2,2]);subplot(1,3,2);plot(t,f2);grid ontitle('f2')xlabel('t'); axis([-3,3,-2,2]);subplot(1,3,3);plot(tt,f);grid ontitle('fi*f2')xlabel('f1*f2');
运行结果如下:

四、实验报告要求
1.简述实验目的和实验原理;
2.写出其对应的matlab程序; 3.计算相应的冲激响应、零状态响应及卷积积分的理论值,并与实验结果进行比较。 4.上机调试程序的方法及实验中的心得体会。心得体会:
本此实验,在操作过程中遇到的最大问题是冲激函数不能调用,之前以为定义了就可以调用,不过是不可以的,只好直接在程序中定义一个冲激函数,总的来说在这次实验中我基本上理解卷积运算,学会用MATLAB求解系统的零状态响应、冲激响应及阶跃响应的方法。