t=-1:0.01:5; ft=(t>=0);
plot(t,ft); grid on; axis([-1,5,-0.5,1.5]); 例1-9 正弦信号符号算法
syms t %定义符号变量t y=sin(pi/4*t) %符号函数表达式 ezplot(y,[-16,16]) %符号函数画图命令 或者
f=sym('sin(pi/4*t)') %定义符号函数表达式 ezplot(f,[-16,16])
例1-10 单位阶跃信号 MATTLAB符号数学函数Heaviside表示阶跃信号,但要画图需在工
作目录创建Heaviside的M文件 function f=Heaviside(t) f=(t>0);
保存,文件名是Heaviside ,调用该函数即可画图,例 t=-1:0.01:3; f=heaviside(t); plot(t,f)
axis([-1,3,-0.2,1.2]) 或者
y=sym('Heaviside(t)'); ezplot(y,[-1,5]);grid on
2. 信号基本运算的MATLAB实现
信号基本运算是乘法、加法、尺度、反转、平移、微分、积分,实现方法有数值法和符号法
例1-11 以f(t)为三角信号为例,求f(2t) , f(2-2t)
t=-3:0.001:3;
ft=tripuls(t,4,0.5);
subplot(3,1,1); plot(t,ft); grid on; title ('f(t)');
ft1= tripuls(2*t,4,0.5);
subplot(3,1,2); plot(t,ft1); grid on; title ('f(2t)');
ft2= tripuls(2-2*t,4,0.5);
subplot(3,1,3); plot(t,ft2); grid on; title ('f(2-2t)');
6
例1-12 已知f1(t)=sinwt , f2(t)=sin8wt , w=2pi , 求f1(t)+f2(t)和f1(t)f2(t) 的波形图 w=2*pi;
t=0:0.01:3; f1=sin(w*t); f2=sin(8*w*t); subplot(211)
plot(t,f1+1,':',t,f1-1,':',t,f1+f2) grid on,title('f1(t)+f2(t))') subplot(212)
plot(t,f1,':',t,-f1,':',t,f1.*f2) grid on,title('f1(t)*f2(t)')
符号算法也可实现上述运算,以信号的微积分运算为例说明符号算法应用 微分的调用格式为 diff(function,’variable’,n) 积分的调用格式为 int(function,’variable’,a,b)
式中function表示要微分或积分的函数,variable表示运算变量,n表示求导阶数,默认值是求一阶导数,a是积分下限,b是积分上限,a b默认是求不定积分。 例1-13 求一阶导数的例题,已知y1?sin(ax2),y2?xsinxlnx clear
syms a x y1 y2 %定义符号变量a, x ,y1, y2 y1=sin(a*x^2); %符号函数y1 y2=x*sin(x)*log(x); %符号函数y2
dy1=diff(y1,’x’) %无分号直接显示结果 dy2=diff(y2) %无分号直接显示结果
1xxex例1-14 求积分的例题,?(x?ax?)dx,?dx
0(1?x)225 clear
syms a x y3 y4
y3=x^5-a*x^2+sqrt(x)/2; y4=(x*exp(x))/(1+x)^2; iy3=int(y3,'x') iy4=int(y4,0,1) 三、上机实验内容
1. 调试实验原理中的程序。 2. 画出信号波形
(1)f(t)?(2?e3.信号f(t)?(2?e?2t)u(t) (2)f(t)?(1?cos?t)[u(t)?u(t?2)]
?2t)u(t),求f(2t)、f(2?t)波形
7
实验二 连续时间LTI系统的时域分析
(设计型)
一、实验目的
1.学会用MATLAB求解连续系统的零状态响应; 2. 学会用MATLAB求解冲激响应及阶跃响应; 3.学会用MATLAB实现连续信号卷积的方法; 二、实验原理
1.连续时间系统零状态响应的数值计算
我们知道,LTI连续系统可用如下所示的线性常系数微分方程来描述,
?ayii?0N(i)(t)??bjf(j)(t)
j?0M在MATLAB中,控制系统工具箱提供了一个用于求解零初始条件微分方程数值解的函数lsim。其调用格式
y=lsim(sys,f,t)
式中,t表示计算系统响应的抽样点向量,f是系统输入信号向量,sys是LTI系统模型,用来表示微分方程,差分方程或状态方程。其调用格式
sys=tf(b,a)
式中,b和a分别是微分方程的右端和左端系数向量。例如,对于以下方程:
a3y'''(t)?a2y''(t)?a1y'(t)?a0y(t)?b3f'''(t)?b2f''(t)?b1f'(t)?b0f(t)
可用a?[a3,a2,a1,a0];b?[b3,b2,b1,b0]; sys?tf(b,a) 获得其LTI模型。
注意,如果微分方程的左端或右端表达式中有缺项,则其向量a或b中的对应元素应为零,不能省略不写,否则出错。
例3-1 已知某LTI系统的微分方程为 y’’(t)+ 2y’(t)+100y(t)=f(t)
其中,y(0)?y(0)?0,f(t)?10sin(2?t),求系统的输出y(t).
解:显然,这是一个求系统零状态响应的问题。其MATLAB计算程序如下: 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.连续时间系统冲激响应和阶跃响应的求解
8
' 在MATLAB中,对于连续LTI系统的冲激响应和阶跃响应,可分别用控制系统工具箱提供的函数impluse和step来求解。其调用格式为 y=impluse(sys,t) y=step(sys,t)
式中,t表示计算系统响应的抽样点向量,sys是LTI系统模型。 例3-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( )函数近似计算信号的卷积积分。连续信号的卷积积分定义是 f(t)?f1(t)?f2(t)?????f1(?)f2(t??)d?
如果对连续信号f1(t)和f2(t)进行等时间间隔?均匀抽样,则f1(t)和f2(t)分别变为离散时间信号f1(m?)和f2(m?)。其中,m为整数。当?足够小时,f1(m?)和f2(m?)既为连续时间信号f1(t)和f2(t)。因此连续时间信号卷积积分可表示为
f(t)?f1(t)?f2(t)??f1(?)f2(t??)d?????lim??0m????f(m?)?f1?
2(t?m?)??采用数值计算时,只求当t?n?时卷积积分f(t)的值f(n?),其中,n为整数,既
f(n?)?
m?????f(m?)?f1m????2(n??m?)??
???f1(m?)?f2[(n?m)?]9
其中,
m????f(m?)?f1?2[(n?m)?]实际就是离散序列f1(m?)和f2(m?)的卷积和。当?足
够小时,序列f(n?)就是连续信号f(t)的数值近似,既 f(t)?f(n?)??[f1(n)?f2(n)]
上式表明,连续信号f1(t)和f2(t)的卷积,可用各自抽样后的离散时间序列的卷积再乘以抽样间隔?。抽样间隔?越小,误差越小。
例3-3用数值计算法求f1(t)?u(t)?u(t?2)与f2(t)?e?3tu(t)的卷积积分。
解:因为f2(t)?e?3tu(t)是一个持续时间无限长的信号,而计算机数值计算不可能计算真正的无限长信号,所以在进行f2(t)的抽样离散化时,所取的时间范围让f2(t)衰减到足够小就可以了,本例取t?2.5。程序是 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(212), plot(tt,f), grid on; title('f(t)=f1(t)*f2(t)'); xlabel('t')
由于f1(t)和f2(t)的时间范围都是从t=-1开始,所以卷积结果的时间范围从 t=-2开始,增量还是取样间隔?,这就是语句tt=(0:n-1)*dt-2的由来。 三、上机实验内容
1. 调试实验原理中所述的相关程序。
2. 已知描述系统的微分方程和激励信号f(t)如下,试用解析法求系统的零状态响应y(t),并用MATLAB绘出系统零状态响应的时域仿真波形,验证结果是否相同 y’’(t)+ 4y’(t)+4y(t)=f’(t)+3f(t) f(t)= exp(-t)u(t)
3.已知描述系统的微分方程如下,试用MATLAB求系统在0~10秒范围内冲激响应和阶跃响应的数值解,并用绘出系统冲激响应和阶跃响应的时域波形
y’’(t)+3y’(t)+2y(t)=f(t) y’’(t)+ 2y’(t)+2y(t)=f’(t) 4.画出信号卷积积分f1(t)?f2(t)的波形,f1(t)?f2(t)?u(t)?u(t?1)
10