matlab编写连续时间系统的时域分析

1.连续时间系统的时域的零状态响应与零输入响应的求解分析

对于低阶系统,一般可以通过解析的方法得到响应,但是,对于高阶系统,手工计算就比较困难,这时MATLAB强大的计算功能就比较容易确定系统的各种响应,如冲激响应、阶跃响应.零状态响应、全响应等。

连续时间系统可以用常系数微分方程来描述,其完全响应由零输人响应和零状态响应组成。MATLAB符号工具箱提供了dsolve函数,可以实现对常系数微分方程的符号求解,其调用格式为
dsolve( ‘eq1, eq2, … .’, ‘cond1, cond2, …’, ‘v’)
其中,参数eq表示各个微分方程,它与MATLAB符号表达式的输入基本相同,微分和导数的输人是使用Dy,D2y,D3y来表示y的一阶导数,二阶导数,三阶导数:参数cond表示初始条件或者起始条件;参数v表示自变量,默认是变量t。通过使用dsolve 函数可以求出系统微分方程的零输入响应和零状态响应,进而求出完全响应。

例1 求解齐次微分方程的零输入响应实例

clear all;
eq= 'D2y+3*Dy+2* y=0';
%求齐次解求零输入响应
cond= 'y(0)= 1,Dy(0) =2';
yzi = dsolve(eq, cond);
yzi=simplify(yzi);

在这里插入图片描述

2.连续时间系统函数数值求解

在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 ,a 1,a0];b= [b3,b2 ,b1 ,b0]; sys= tf(b,a)获得其LTI模型。注意,如果微分方程的左端或右端表达式中有缺项,则其向量a或b中的对应元素应为零,不能省略不写,否则出错。

例2 系统用微分方程描述为y"(t) +2y’(t)+ 100y(t) = 10cos2πt ,求系统的零状态响应

clear
ts=0;te=5;dt= 0.01;
sys=tf([1],[1 2 200]);
t= ts:dt:te;
f=10* cos(2*pi* t);
y= lsim(sys,f,t);
plot(t,y);
xlabel('t(s)' );ylabel('y(t)');
title('零状态响应')
grid on;

在这里插入图片描述

3.连续时间系统冲激响应和阶跃响应分析

在MATLAB中,求解系统冲激响应可应用控制系统工具箱提供的丽数impulse,求解阶跃响应可利用函数step,其调用形式为
y= impulse(sys,t)
y= step(sys,t)
式中,t表示计算系统响应的抽样点向量,sys是LTI系统模型。

例3 绘制冲激响应和阶跃响应

clear all;
t= 0:0.002:4; 
sys= tf([1, 32],[1,4, 64]);
h= impulse(sys,t);
%冲激响应
g=step(sys, t);
%阶跃响应
subplot(2,1,1);plot(t, h);
grid on;
xlabel('时间/s');ylabel( 'h(t)');
title('冲激响应');
subplot(2, 1,2);plot(t,g);
grid on;
xlabel( '时间/s');ylabel('g(t)');
title( '阶跃响应');

在这里插入图片描述
例4 3]计算下述系统在冲激、阶跃、斜坡、正弦激励下的零状态响应:
y"’’(t)+0.64y"’(t)十0.94y"(t)十0.51y’(t)十0.01y(t) =-0.46f’’’(t)-0. 25f’’(t)-0.12f’(t)一0.06f(t)

b=[-0.48 -0.25 -0.12 -0.06];a=[1 0.64 0.94 0.51 0.01];
sys= tf(b,a);
T= 1000;
t=0:1/T:10;t1= -5:1/T:5;
f1= stepfun(t1,-1/T) - stepfun(t1,1/T);
f2 = stepfun(t1,0);
f3=t;
f4= sin(t);
y1= lsim(sys,f1,t);
y2= lsim(sys, f2,t);
y3= lsim(sys, f3,t);
y4= lsim(sys, f4,t);
subplot(221);
plot(t,y1);
xlabel('t');ylabel( 'y1(t)');
title('冲激激励下的零状态响应');
grid on;axis([0 10 -1.2 1.2]);
subplot(222);
plot(t,y2);
xlabel('t');ylabel('y2(t)');
title('阶跃激励下的零状态响应');
grid on;axis([0 10 -1.2 1.2]);
subplot(223);
plot(t,y3);
xlabel('t');ylabel('y3(t)');
title('斜坡激励下的零状态响应');
grid on;axis([0 10 -5 0.5]);
subplot(224);
plot(t,y4);
xlabel('t');ylabel('y4(t)');
title('正弦激励下的零状态响应');
grid on;axis([0 10 -1.5 1.2]);

在这里插入图片描述

4.连续时间系统卷积求解

连续信号的卷积积分定义为f(t) = f1(t)* f2(t),信号的卷积运算有符号算法和数值算法,此处采用数值计算法,需调用MATLAB的conv()函数近似计算信号的卷积积分。

例5 用数值计算法求f1(t)=u(t)-0. 5u(t-2)与f2(t)=2e-3t u(t)的卷积积分

dt=0.01;t = -1:dt:2.5;
f1 = heaviside(t)-0.5*heaviside(t -2);
f2=2*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'); ylabel('f1(t)');
subplot(222);
plot(t, f2);
grid on;
axis([- 1,2.5, -0.2,1.2]);
title('f2(t)');
xlabel('t'); ylabel('f2(t)');
subplot(212);
plot(tt, f);
grid on;
title('卷积积分');
xlabel('t'); ylabel('f3(t)');

在这里插入图片描述
以上基础原理知识都可以参考信号与系统,这里都是用matlab做计算的。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值