MATLAB在线性系统理论中的应用

  • 格式:doc
  • 大小:53.50 KB
  • 文档页数:10

MATLAB在线性系统理论中的应用 第一章传递函数与状态空间表达式 1.1 传递函数与状态空间表达式之间的转换 用ss命令来建立状态空间模型。对于连续系统,其格式为sys=ss(A,B,C,D),其中a,b,c,d为描述线性连续系统的矩阵。 当sys1是一个用传递函数表示的线性定常系统时,可以用命令sys=ss(sys1)将其转换成为状态空间形式,也可以用命令sys=ss(sys1,’min’)计算出系统sys的最小实现。

example1:系数传递函数到状态空间表达式 >>num=[1 7 24 24];den=[1 10 35 50 24]; g=tf(num,den); sys=ss(g) the answer is:

a = x1 x2 x3 x4 x1 -10 -4.375 -3.125 -1.5 x2 8 0 0 0 x3 0 2 0 0 x4 0 0 1 0 b = u1 x1 2 x2 0 x3 0 x4 0 c = x1 x2 x3 x4 y1 0.5 0.4375 0.75 0.75 d = u1 y1 0

Continuous-time model. example2:由传递函数系数,将离散系统脉冲传递函数模型转换成状态空间表达式

>>num=[0.31 0.57 0.38 0.89];den=[1 3.23 3.98 2.22 0.47]; gyu=tf(num,den,'ts',0.1) the answer is: Transfer function: 0.31 z^3 + 0.57 z^2 + 0.38 z + 0.89 ----------------------------------------- z^4 + 3.23 z^3 + 2.98 z^2 + 2.22 z + 0.47

Sampling time: 0.1 Pzmap(gyu)%绘制零极点分布图

sys=ss(gyu)%将离散系统脉冲传递函数模型转换成状态空间表达式。 The answer is: a = x1 x2 x3 x4 x1 -3.23 -1.49 -1.11 -0.235 x2 2 0 0 0 x3 0 1 0 0 x4 0 0 1 0 b = u1 x1 1 x2 0 x3 0 x4 0 c = x1 x2 x3 x4 y1 0.31 0.285 0.19 0.445 d = u1 y1 0

Sampling time: 0.1 Discrete-time model.

Example 3:用s求逆矩阵法从系统矩阵 a,b,c,d求得传递函数 >>syms s; a=[0 1;-2 -3];b=[1 0;1 1 ];c=[2 1;1 1;-2 -1]; d=[3 0;0 0;0 1];i=[1 0;0 1]; f=inv(s*i-a) g=simple(simple(c*f*b)+d) The answer is: f = [ (s+3)/(s^2+3*s+2), 1/(s^2+3*s+2)] [ -2/(s^2+3*s+2), s/(s^2+3*s+2)] g = [ 3/(s+1)+3, 1/(s+1)] [ 2/(s+2), 1/(s+2)] [ -3/(s+1), -1/(s+1)+1]

Example 4 eig()指令,求特征根矩阵和特征向量矩阵 函数eig() Example 5 约旦标准型 函数jordan() >> a=[0 1 0;0 0 1;2 -5 4]

a = 0 1 0 0 0 1 2 -5 4

>> [q,j]=jordan(a) q = 1 -2 0 2 -2 -2 4 -2 -4 j =

2 0 0 0 1 1 0 0 1

Example 6从状态转移矩阵到传递函数的转化 举例:clear

a=[0 1 0;0 0 1;-6 -11 -6]; b=[0;0;1]; c=[ 1 1 1]; d=[0]; v=ss(a,b,c,d) [num,den]=ss2tf(a,b,c,d); printsys(num,den) [z,p,k]=ss2zp(a,b,c,d); zpk(z,p,k) x0=[2;0;1]; figure(1) step(v) figure(2) initial(v,x0) t=0:0.1:60; u=t; figure(3) lsim(v,u,t); %figure(3)

第二章 状态转移矩阵与状态方程的解 Example 1 Collect函数的作用是合并同类项,ilaplace()函数的作用的求取laplace反变换,函数det()的作用是求方阵的行列式。 syms s t x0 x tao phi phi0;%声明变量 a=[0 1;-2 -3];I=[1 0;0 1]; e=s*I-a; c=det(e); d=collect(inv(e)); phi0=ilaplace(d) x0=[1;0];x=phi0*x0 %公式与关系:sinh是双曲正弦函数。cosh是双曲余弦函数。 带h的都是双曲函数。 sinh(x)=(exp(x) - exp(-x)) / 2.0; cosh(x)=(exp(x) + exp(-x)) / 2.0; tanh(x) = sinh(x) / cosh(x); The answer is: phi0 =

[ 2*exp(-t)-exp(-2*t), 2*exp(-3/2*t)*sinh(1/2*t)] [ -4*exp(-3/2*t)*sinh(1/2*t), -exp(-t)+2*exp(-2*t)]

x = 2*exp(-t)-exp(-2*t) -4*exp(-3/2*t)*sinh(1/2*t)

Example 2 syms s t x0 ta0 phi phi0; a=[0 1;-2 -3];I=[1 0;0 1]; e=s*I-a; c=det(e); d=collect(inv(e)) phi0=ilaplace(d) x0=[1;0]; x1=phi0*x0; phi=subs(phi0,'t',(t-tao));f=phi*b*1; x2=int(f,tao,0,t); x=collect(x1+x2) The answer is: phi0 =

[ 2*exp(-t)-exp(-2*t), 2*exp(-3/2*t)*sinh(1/2*t)] [ -4*exp(-3/2*t)*sinh(1/2*t), -exp(-t)+2*exp(-2*t)]

x = 2*exp(-t)-exp(-2*t)+1/2-1/2*sinh(2*t)+sinh(t)+1/2*cosh(2*t)-cosh(t) -4*exp(-3/2*t)*sinh(1/2*t)+exp(-t)-exp(-2*t) Example 3 c2d() 函数的功能是将连续时间的系统模型转换成离散时间的系统模型,其调用格式为:sysd=c2d(sysc,t,method).其中,输入参量sysc为连续时间的系统模型;t为采样周期(s);method用来指定离散化的方法: ‘zoh’—采用零阶保持器; ‘foh’—采用一届保持器; ‘tustin’—采用双线性逼近方法; ‘prewarm’—采用改进的tustin方法; ‘matched’—采用siso系统的零极点匹配方法; >>a=[0 1 0;0 0 1;-6 -11 -6];b=[1 0;2 -1;0 2];c=[1 -1 0;2 1 -1]; >> d=zeros(2);%将d赋值为2*2全零矩阵 >> t=0.1; >> g=ss(a,b,c,d); >> gd=c2d(g,t) 状态方程为……;a,b,c,d;采用零阶保持器将其离散化,采样周期为0.1s。求离散化的系统方程。 a = x1 x2 x3 x1 0.9991 0.0984 0.004097 x2 -0.02458 0.9541 0.07382 x3 -0.4429 -0.8366 0.5112

b = u1 u2 x1 0.1099 -0.004672 x2 0.1959 -0.0902 x3 -0.1164 0.1936 c = x1 x2 x3 y1 1 -1 0 y2 2 1 -1

d = u1 u2 y1 0 0 y2 0 0

Sampling time: 0.1 Discrete-time model. 第三章 能控能观性 1 能控性、能观性 线性控制系统的能控性矩阵和能观性矩阵,并且求出他们的秩,从而判断系统的能控性和能观测性。函数ctrb()和obsv()分别计算系统的能控能观矩阵。格式为:qc=ctrb(a,b);qo=obsv(a,c).然后再用rank()函数计算矩阵的秩。 >> a=[1 0 -1;-1 -2 0;3 0 1];b=[1 0;2 1;0 2];c=[1 0 0;0 -1 0]; >> qc=ctrb(a,b)

qc = 1 0 1 -2 -2 -4 2 1 -5 -2 9 6 0 2 3 2 6 -4

>> qo=obsv(a,c) qo = 1 0 0 0 -1 0 1 0 -1 1 2 0 -2 0 -2 -1 -4 -1

>> rc=rank(qc) rc = 3 >> ro=rank(qo) ro = 3 注:当系统的模型用sys=ss(a,b,c,d)输入以后,也就是当系统模型用状态空间表达式表示时,也可以用qc=ctrb(sys),qo=obsv(sys)的形式求出该系统的能控性矩阵和能观性矩阵。