零输入响应与零状态响应 - 下载本文

1. 零输入响应与零状态响应

在Matlab中,lsim函数还可以对带有非零起始状态的LTI系统进行仿真,使用方法为y=lsim(sys,u,t,x0),其中sys表示LTI系统,矢量u和t分别表示激励信号的抽样值和抽样时间,矢量x0表示该系统的初始状态,返回值y是系统响应值。如果只有起始状态而没有激励信号,或者令激励信号为0,则得到零输入响应。如果既有初始状态也有激励信号,则得到完全响应。

请注意lsim函数只能对用状态方程描述的LTI系统仿真非零起始状态响应,函数ss(对传递函数描述的LTI系统将失效,函数tf)。

例2.5 给定如图所示电路,t<0时S处于1的位置而且已经达到稳态,将其看做起始状态,当t=0时,S由1转向2.分别求t>0时i(t)的零状态响应和零输入响应。

图2.1 例2.4 电路图 解:由所示电路写出回路方程和结点方程

分别得到状态方程和输出方程:

下面将用两种方法计算完全响应。第一种方法:首先仿真2V电压e作用足够长时间(10s)后系统进入稳态,从而得到稳态值x0,再以该值作为初始值仿真4V电压e作用下的输出rf,即是系统的完全响应,为充分掌握lsim函数的使用方法,还仿真了系统的零状态响应rzs和零输入响应rzi。第二种方法:构造一个激励信号,先保持2V足够长时间再跳变为4V,然后即可以零初始状态一次仿真得到系统的完全响应r1。

对应程序如下:

C=1; L=1/4; R1=1; R2=3/2;

A=[-1/R1/C,-1/C;1/L,-R2/L]; B=[1/R1/C;0]; C=[-1/R1,0]; D=[1/R1];

sys=ss(A,B,C,D); %建立LTI系统sys

tn=[-10:0.01:-0.01]'; %生成-10s到-0.01s的抽样时间,间隔为0.01s en=2*(tn<0); %生成机理信号的抽样值e(t)=2

[rn tn xn]=lsim(sys,en,tn); %仿真t<0时的输出信号 x0=xn(length(en),:); %x0记录了初始状态的值 t=[0:0.01:10]';

e=4*(t>=0); %生成激励信号的抽样值e(t)=4 ezi=0*(t>=0); %生成零输入信号的抽样值e(t)=0 rzs=lsim(sys,e,t); %仿真零状态响应 rzi=lsim(sys,ezi,t,x0); %仿真零输入响应 rf=lsim(sys,e,t,x0); %仿真完全响应

r1=lsim(sys,[en;e],[tn;t]); %用另一种方法仿真完全响应 2. 冲激响应与阶跃响应

如果分别用冲激信号和阶跃信号作激励,lsim函数可仿真出冲激响应和阶跃响应。但鉴于这两种响应的重要性,为简化操作,Matlab专门提供了impulse(sys)和step(sys)两个函数分别直接产生LTI系统的冲激响应和阶跃响应,其中sys表示LTI系统模型。

1) 连续系统的单位冲激响应h(t)的计算

impulse(sys)计算并画出连续系统的冲激响应,sys可由函数tf(b,a)获得,其中b和a分别是系统函数H(s)的分子多项式和分母多项式的系数矩阵。h=impulse(sys,t)计算并画出系统在向量t定义的时间范围内的冲激响应,向量h保存对应时间的系统冲激响应的输出值。

例2.6 已知描述某连续系统的微分方程为y?t??5y?t??6y?t??2f?t??8f?t?计算

''''该系统的单位冲激响应h(t).

对应程序如下: a=[1,5,6]; b=[2,8]; sys=tf(b,a); t=0:0.1:10;

h=impulse(sys,t); plot(h);

xlabel('t'); title('h(t)') 观察运行结果图。

2) 连续系统单位阶跃响应g(t)的计算

step(sys)计算并画出连续系统的阶跃响应。g=step(sys,t)计算并画出连续系统在向量t定义的时间范围内的阶跃响应。向量g保存对应时间的系统阶跃响应的输出值。 二、卷积

在Matlab中,连续时间的卷积运算可以用数值方法计算近似值。首先对卷积公式

f?t???f1???f2?t???d? 两侧以T为间隔抽样,再将积分拆成长度为T的若干小段,得

???到 f?nT??m??????mT?TmTf1???f2?nT???d?

假设抽样间隔足够小,以至于两个函数相邻抽样点上的值几乎不变,则近似有

f?nT??T?f1?mT?f2?nT?mT? (2.1)

mMatlab中定义了w=conv(u,v) 函数实现卷积和

w?n???u?m?v?n?1?m? (2.2)

m下面讨论如何利用conv函数实现连续时间卷积。首先假设序列u(m)是函数f1?t?从t1时刻开始,以T为间隔采样的结果,则

t??u?m?1?1??f1?mT? (2.3)

T??假设t1是T的整数倍。同理假设v(m)是对函数f2?t?从t2时刻开始以相同间隔抽样得到的序列,即

t??v?m?1?1??f2?mT? (2.4)

T??将式(2.3)和(2.4)带入式(2.1),有

t??t??f?nT??T?u?m?1?1?v?n?m?1?2? (2.5)

T??T??m定义m?m?1?'t1t?t',n?n?1?12并带入式(2.5)得到 TTf?nT??T?um'vn'?1?m' (2.6)

m????对比式(2.2)和(2.6)有

t?t?f?nT??Twn'?Tw?n?1?12T????? (2.7) ?即w(n)近似为从t1?t2时刻开始以T为间隔对f(t)抽样得到的序列,从而可以用conv函数实现连续时间卷积。在以上推导的基础上,定义了一个函数conv1实现连续时间卷积: 文件名为conv1.m

function[w,tw]=conv1(u,tu,v,tv)%输入参数:u和v表示两个序列,tu和tv分别表示他

们的抽样时间返回值.即输出参数:w和tw分别表示卷积结果及其抽样时间。

T=tu(2)-tu(1);%以T为间隔抽样,再将积分拆成长度为T的若干小段,相当于dt w=T*conv(u,v);

tw=tu(1)+tv(1)+T*[0:length(u)+length(v)-2];

%抽样时间tw=[tu(1)+tv(1), tu(1)+tv(1)+T, tu(1)+tv(1)+2T,…,

tu(1)+tv(1)+T(length(u)-1+length(v)-1)] 卷积的时间为两序列起点的和到两序列终点的和

例2.7 已知某系统冲激响应为h?t??t2,0

的矩形脉冲e(t)激励该系统,求输出信号y(t)。

对应程序如下: t=[-1:0.01:4]’;

e=[-0.5:0.01:(-0.5+1.5)]; h=(t>0&t<2).*t/2; [r1,t1]=conv1(e,t,h,t);

tr=t1(t1>=-1&t1<=4); %从t1中选择和t相同起止时刻的抽样时间tr r=r1(t1>=-1&t1<=4); %用类似方法选择tr对应的输出r plot(tr,r)