STM32
直播中

恐龙之家

8年用户 806经验值
私信 关注
[问答]

小白求助,求matlab连续系统状态空间表达式

小白求助,求matlab连续系统状态空间表达式

回帖(1)

h1654155275.5741

2021-11-22 09:50:58
数学过程推导

具'j体的数i学推导过程a就不做详绍了,在现代控制理论教材中都有,这儿贴两张图片














matlab 程序编写
根据上面公式推导,假设存在系统,其中,


其离散系统表达式为


求系统的状态转移矩阵,式中为拉氏反变换


matlab求解过程为


A = [0 1;0 -2];
B1 = [0 ;1];
syms s t Ls;   % 求状态转移矩阵 利用拉氏变换,syms为符号函数用来定义数学函数
    I = eye(size(A));
    Ls = inv(s*I - A);
    STM = ilaplace(Ls,s,t) %状态转移矩阵,ilaplace为拉氏反变换函数
同理可以求H


syms s t Ls;   % 求状态转移矩阵 利用拉氏变换
    I = eye(size(A));
    Ls = inv(s*I - A);% collect 函数为合并同类项
    STM = ilaplace(Ls,s,t) %状态转移矩阵
   
syms T
    HLs = int(STM,t,0,T);
    H = HLs*B1
运行结果如下




    在simulink仿真过程中,我们需要G和H为已知的矩阵,当T固定时就可以求出G和H的具体数值了,这是需要用到符号函数求解函数subs,设步长T为0.001;matlab命令为
    dt = 0.001;A = [0 1;0 -2];B1 = [0 ;1];syms s t Ls;   % 求状态转移矩阵 利用拉氏变换    I = eye(size(A));    Ls = inv(s*I - A);% collect 函数为合并同类项    STM = ilaplace(Ls,s,t); %状态转移矩阵    G = double(subs(STM,t,dt)) % 符号函数求解syms T    HLs = int(STM,t,0,T);    H = HLs*B1;    H = real(double(subs(H,T,dt))) % 符号函数求解 结果如下:





    到这matlab部分就完成了剩下的就是在simulink中的具体仿真了,这个有需要再写吧,贴下自己做的一个简单仿真和连续系统同时进行的以便对数据对比,结果是连续系统和离散系统仿真数据是一样的。








举报

更多回帖

发帖
×
20
完善资料,
赚取积分