ft=sinc(t/pi); plot(t,ft),grid on; axis([-20,20,-0.5,1.2]) title('抽样信号')
(3) 矩形脉冲信号:用MATLAB中y=rectpuls(t,width)函数命令画出下列矩形脉冲信号的波形图
?2f(t)???0程序如下:
t=-0.5:0.01:3; t0=0.5;width=1; ft=2*rectpuls(t-t0,width); plot(t,ft),grid on; axis([-0.5,3,-0.2,2.2]) title('矩形脉冲信号')
(0?t?1)(t?0,t?1)
(4) 单位阶跃信号:用MATLAB命令“y=(t>=0)”绘出-1≤ t ≤ 5单位阶跃信号ε(t)。 程序如下:
t=-1:0.01:5; ft=(t>=0); plot(t,ft),grid on; axis([-1,5,-0.5,1.5]); title('单位阶跃信号') 也可通过定义阶跃函数来实现,
function f=uCT(t); f=(t>=0);
保存为uCT.m文件,上面实现阶跃信号的程序变为
t=-1:0.01:5; ft=uCT(t); plot(t,ft),grid on; axis([-1,5,-0.5,1.5]); title('单位阶跃信号')
2. 实践编程
(1) 复指数信号:用MATLAB命令画出0≤ t ≤ 3复指数信号f(t)?2e(?1.5?j10)t的实部、虚部、模及相角随时间变化的曲线,并观察其时域特性。
(2) 用MATLAB中y=square(t,DUTY)产生频率为10Hz、占空比为30%的周期方波信号。
5
(3) 用上面定义的uCT阶跃函数实现幅度为1、宽度为1的门函数g?(t)。
实验分析
观察实验结果,掌握、分析典型的连续时间信号波形特点。
实验总结
总结实验认识、过程、效果、问题、收获、体会、意见和建议。
实验二 连续时间LTI系统的时域分析
实验目的
1.运用MATLAB符号求解连续系统的零输入响应和零状态响应; 2.运用MATLAB数值求解连续系统的零状态响应; 3.运用MATLAB求解连续系统的冲激响应和阶跃响应; 4.运用MATLAB卷积积分法求解系统的零状态响应。
实验原理
1. 连续时间系统零输入响应和零状态响应的符号求解
LTI连续系统可用线性常系数微分方程描述,即
?ayii?0N(i)(t)??bjf(j)(t)
j?0MMATLAB符号工具箱提供了dsolve函数,可实现常系数微分方程的符号求解,其调用格式为
dsolve(?eq1,eq2,…?,?cond1,cond2,…?,?v?)
其中,参数eq1,eq2、…表示各微分方程,它与MATLAB符号表达式的输入基本相同,微分或导数的输入是用Dy、D2y、D3y、…来表示y的一阶导数y?、二阶导数y??、三阶导数y???、…;参数cond1、cond2、…表示各初始条件或起始条件;参数v表示自变量,默认为是变量t。可利用dsolve函数来求解系统微分方程的零输入响应和零状态响应,进而求出完全响应。
6
2. 连续时间系统零状态响应的数值求解
实际工程中用的较多求解微分方程的方法是数值求解。零输入响应的求解可通过函数initial来实现,initial函数中的参量必须是状态变量所描述的系统模型。对于零状态响应,MATLAB控制系统工具箱提供了对LTI系统的零状态响应进行数值仿真的函数lsim,该函数可求解零初始条件下微分方程的数值解,语句格式为
y=lsim(sys,f,t)
其中,t表示计算系统响应的时间抽样点向量;f是系统的输入信号向量;sys表示LTI系统模型,用来表示微分方程、差分方程或状态方程。在求解微分方程时,sys是由MATLAB的tf函数根据微分方程系数生成的系统函数对象,其语句格式为
sys=tf(b,a)
其中,b和a分别为微分方程右端和左端的系数向量。注意,如果微分方程的左端或右端表达式中有缺项,则其向量a或b中的对应元素应为0,不能省略不写,否则会出错。
3. 连续时间系统冲激响应和阶跃响应的求解
在MATLAB中,对于连续LTI系统的冲激响应和阶跃响应的数值解,可分别用控制系统工具箱提供的函数impulse和step来求解。其语句格式为
y=impulse(sys,t) y=step(sys,t)
其中,t表示计算系统响应的时间抽样点向量,sys表示LTI系统模型。
4. 利用卷积积分法求系统的零状态响应
由卷积积分公式可以得到,LTI系统对于任意输入信号的零状态响应,可由系统的单位冲激响应与输入信号的卷积积分得到。
预先建立连续时间信号卷积运算的函数ctsconv.m,其MATLAB源程序为 function[f,t]=ctsconv(f1,f2,t1,t2,dt) % f1和f2分别是参与计算的两个时间信号 f=conv(f1,f2); % t1,t2是两信号时间变量,dt为时间采样间隔 f=f*dt;
ts=min(t1)+min(t2); te=max(t1)+max(t2); t=ts:dt:te; subplot(221) plot(t1,f1);grid on;
axis([min(t1),max(t1),min(f1)-abs(min(f1)*0.2),max(f1)+abs(max(f1)*0.2)]) title('f1(t)');xlabel('t') subplot(222) plot(t2,f2);grid on;
7
axis([min(t2),max(t2),min(f2)-abs(min(f2)*0.2),max(f2)+abs(max(f2)*0.2)]) title('f2(t)');xlabel('t') subplot(212) plot(t,f);grid on;
axis([min(t),max(t),min(f)-abs(min(f)*0.2),max(f)+abs(max(f)*0.2)]) title('f(t)= f1(t)* f2(t)');xlabel('t') 在实际计算中,调入即可应用。
实验内容
1. 实例分析与验证
(1) 连续时间系统零输入响应和零状态响应的符号求解
试用MATLAB命令求解微分方程y??(t)?3y?(t)?2y(t)?x?(t)?3x(t),当输入x(t)?e?3t?(t),起始条件为y(0?)?1、y?(0?)?2时系统的零输入响应、零状态响应及完全响应。
源程序为:
eq='D2y+3*Dy+2*y=0'; cond='y(0)=1,Dy(0)=2';
yzi=dsolve(eq,cond);yzi=simplify(yzi) 运行结果: yzi =
-3*exp(-2*t)+4*exp(-t)
eq1='D2y+3*Dy+2*y=Dx+3*x'; eq2='x=exp(-3*t)*Heaviside(t)'; cond='y(-0.001)=0,Dy(-0.001)=0';
yzs=dsolve(eq1,eq2,cond);yzs=simplify(yzs.y) 运行结果: yzs =
heaviside(t)*(-exp(-2*t)+exp(-t))
yt=simplify(yzi+yzs) 运行结果: yt =
-3*exp(-2*t)+4*exp(-t)-exp(-2*t)*heaviside(t)+exp(-t)*heaviside(t)
8