将系统转化为能控标准型的步骤如下1.构造判别矩阵Mc,判断系统是否能控。2.构造变换矩阵TpTp的计算如下其中a1...an为特征多项式的各项系数。3.计算出变换矩阵,然后通过下列式子转化矩阵A、B、C得到系统的能控标准型在matlab中对系统能控标准型的转化主要会用到下列函数 函数用法说明det(B)返回方阵的行列式diag(B,x)生成在主对角线上方第x条对角线为向量B的矩阵x为负时为对角线下方第x条对角线ctrb(A,B)返回系统的能控性判别矩阵Mc其中A为系统矩阵B为输入矩阵sysss(A,B,C,D)由A、B、C、D矩阵得到连续系统的状态空间模型[A,B,C,D]ssdata(sys)得到连续系统的A、B、C、D矩阵systss2ss(sys,TM)通过非奇异变换矩阵TM变换系统sys的空间表达式numsym2poly(p)返回符号多项式p的系数向量num。返回的系数向量c包括所有系数包括等于0的系数下面通过一个例子来演示将一个线性定常系统的状态空间模型转化为能控标准型。例已知线性定常系统的状态空间模型模型为采用MATLAB将系统变化为能控标准型。解程序如下%先编写trancon.m函数用于求系统的能控标准型。 function sysctrancon(sys) %函数输入为ss模型传递函数输出为ss模型传递函数 [A,B,C,D]ssdata(sys); %得到原系统的的矩阵A,B,C,D nlength(A); %得到系统矩阵A的维度n Mcctrb(A,B); %求能控型判别矩阵Mc if rank(Mc)n %若判别矩阵Mc不满秩说明系统不可控无法转化为能控标准型 disp(Uncontrollable system); else %若系统满秩说明可以转化为能控标准型 T1[]; T2zeros(n); %矩阵T1和T2用来求变换矩阵Tp Ieye(size(A)); %单位矩阵I syms s Fdet(s*I-A); %求系统的特征多项式 asym2poly(F); %提取系统的特征多项式的系数向量 for i1:1:n %求得矩阵T1T2 T1[A^(i-1)*B T1]; T2T2diag(a(i)*ones(1,n1-i),1-i); end TpT1*T2 %计算变换矩阵Tp syscss2ss(sys,inv(Tp));%求得变换为能控标准型的状态空间模型 end 然后在命令窗口中输入 A[0 1 2 ;-2 -3 0;-1 1 -3]; B[0 1 2]; C[0 0 1]; D0; sysss(A,B,C,D); sysctrancon(sys)运行结果如下Tp 17 5 0 -6 3 1 3 7 2 sysc A x1 x2 x3 x1 0 1 0 x2 0 0 1 x3 -16 -13 -6 B u1 x1 0 x2 0 x3 1 C x1 x2 x3 y1 3 7 2 D u1 y1 0 Continuous-time state-space model.可以从结果看到变换矩阵Tp以及化为能控能控标准型后的矩阵A、B、C、D。