【matlab】状态空间模型与传递函数模型的建立与转换

SISO系统

线性定常连续系统一般以常系数线性常微分方程来描述。对于一个SISO线性定常连续系统,其常微分方程描述为:

对应的经拉氏变换得到的传递函数模型为

在Matlab中,多项式a_0s^n+a_1s^{n-1}...+a_n常用数组表达,如n阶多项式可用n+1个元素的数组表达为[aa1  …  an],其中,数组元素按多项式中“s”的降幂顺序排列,其中的“0”不能省略。因此传递函数的分子与分母多项式可以用2个数组表达

num=[bb1  …  bn]

den=[aa1  …  an]

在Matlab中,传递函数模型变量的数据结构为‘tf’类,可采用函数命令tf()来描述分子和分母多项式的数组组合,建立控制系统的传递函数模型。
tf()函数命令的主要调用格式为
                       sys=tf(num,den)或直接为sys=tf([bb1  …  bn], [aa1  …  an])
经过上述命令,变量sys即表示上述连续系统传递函数模型。类似地,对于SISO线性定常离散系统,其高阶差分方程模型和z域传递函数模型分别为

建立Matlab的离散定常系统传递函数模型可采用函数命令tf(),其建立离散系统传递函数的语句为:
num=[b0  b1  …  bn]

den=[a0  a1  …  an]

sys=tf(num, den, Ts)
或直接为:
sys=tf([b0  b1  …  bn], [a0  a1  …  an] , Ts)
其中,Ts为采样周期的值。当Ts=-1或者Ts=[]时,则系统的采样周期未定义。经过上述命令,变量sys即表示上述离散系统传递函数模型。
eg:

num_1=[1 2 1];
den_1=[1 5 6];
sys_1=tf(num_1,den_1,-1)

MIMO系统

MIMO线性定常连续系统的传递函数阵G(s)可以表示为

其中,Gij(s)=nij(s)/dij(s)描述了第i个输出与第j个输入之间的动态传递关系,nij(s)和dij(s)分别为其分子与分母多项式.
eg:

num={[1 2 1] [1 5]; [2 3] [6]};

den={[1 5 6] [1 2]; [1 6 11 6] [2 7]};

sys_1=tf(num,den)

状态空间模型

线性定常连续系统的状态空间模型为

ss()函数的主要调用格式为:
sys=ss(A,B,C,D)
式中,A,B,C,D为已经赋值的适宜维数的数组(矩阵)。
若输入的矩阵维数不匹配,ss()函数将显示出错信息,指出系统矩阵维数不匹配。对线性定常离散系统S(G,H,C,D),则用函数ss()来建立状态空间模型的调用格式为:

sys=ss(G,H,C,D,Ts)

式中,Ts为输入的采样周期,与建立离散系统传递函数的Matlab函数tf()的格式一致。

eg:

A_2=[0 1; -2 -3];
B_2=[0; 1];  C_2=[1 0];  
D_2=0;
sys_2=ss(A_2,B_2,C_2,D_2) 

状态空间模型到传递函数模型的转换

由状态空间模型求解传递函数模型问题的调用格式为:

连续系统: con_tf=tf(con_ss)

离散系统: dis_tf=tf(dis_ss)

传递函数模型到状态空间模型的转换

(1) 转换函数ss()

连续系统: con_ss=ss(con_tf)

离散系统: dis_ss=ss(dis_tf)

(2) 规范形转换函数canon()
Matlab提供的规范形转换函数canon()可以将传递函数模型转换得到状态空间的模态规范形,即对角规范形,其调用格式为:

连续系统: con_ss=canon (con_tf, 'modal')

离散系统: dis_ss=canon (dis_tf, 'modal')

(3) 常微分方程(传递函数)转换为状态空间模型函数dif2ss()  
函数dif2ss()的主要调用格式为:
sys_ss=dif2ss (sys_tf,type)
sys_ss=dif2ss (sys_num, sys_den,type)
eg:
num_1=[2 14 24];  den_1=[1 5 8 4];
sys_1=tf(num_1,den_1);
sys_comp=dif2ss(sys_1,'companion')
sys_jord=dif2ss(num_1,den_1,'jordan') 

状态空间模型的变换

Matlab提供在给定变换矩阵下,计算状态空间模型变换的可直接调用函数ss2ss(),其调用格式为:
sysT = ss2ss(sys,T)
其中,sys和sysT分别为变换前与变换后(输入与输出)的状态空间模型变量;T为给定的变换矩阵。
eg:
A=[0 1 0; 0 0 1; -6 -11 -6];
B=[0; 0; 6];  C=[1 0 0];  D=0;
P=[1 1 1; -1 -2 -3; 1 4 9];
sys_in=ss(A,B,C,D);
sys_out=ss2ss(sys_in,inv(P)) 

 特征值、特征向量与广义特征向量的计算

Matlab提供直接计算特征值和特征向量的函数为eig(),其调用格式为:

d = eig(A)

[V,D] = eig(A)

Matlab的函数eig()不能直接计算广义特征向量,要计算广义特征向量则需要符号计算工具箱的函数jordan(),其调用格式为

J = jordan(A)

[V,J] = jordan(A)

eg:

A=[0 1 0; 0 0 1; -4 -8 -5];
B=[0; 0; 1];  C=[1 0 0];  D=0;
sys_in=ss(A,B,C,D);
[P,J]=jordan(A);
sys_out=ss2ss(sys_in,inv(P)) 

相关推荐

  1. 状态模式:管理状态转换策略

    2024-07-09 21:56:01       18 阅读
  2. 神经网络模型前向传播函数

    2024-07-09 21:56:01       12 阅读
  3. 基于R语言选举数据模型建立预测分析

    2024-07-09 21:56:01       20 阅读

最近更新

  1. 2742. 给墙壁刷油漆

    2024-07-09 21:56:01       0 阅读
  2. longjmp和多线程:读写线程实例

    2024-07-09 21:56:01       0 阅读
  3. 【CF】1216F-WiFi 题解

    2024-07-09 21:56:01       0 阅读
  4. 牛客周赛 Round 52VP(附D的详细证明)

    2024-07-09 21:56:01       0 阅读
  5. Android13 应用代码中修改热点默认密码

    2024-07-09 21:56:01       0 阅读
  6. 【React】事件绑定、React组件、useState、基础样式

    2024-07-09 21:56:01       0 阅读
  7. postman接口测试工具详解

    2024-07-09 21:56:01       0 阅读
  8. Symfony数据库抽象层:深入理解其工作原理

    2024-07-09 21:56:01       0 阅读
  9. 设计模式--职责链模式

    2024-07-09 21:56:01       0 阅读

热门阅读

  1. SQL中字符串类型中char和varchar之间的区别是什么

    2024-07-09 21:56:01       6 阅读
  2. 【框架】ABP(ASP.NET Boilerplate Project)

    2024-07-09 21:56:01       6 阅读
  3. SQL Server集成服务(SSIS):数据集成的瑞士军刀

    2024-07-09 21:56:01       6 阅读
  4. LVS+Keepalived群集

    2024-07-09 21:56:01       5 阅读
  5. 精准控制:Eureka服务续约间隔配置全指南

    2024-07-09 21:56:01       9 阅读
  6. 部署LVS-DR群集

    2024-07-09 21:56:01       10 阅读
  7. WordPress禁止用户注册某些用户名

    2024-07-09 21:56:01       9 阅读