自学内容网 自学内容网

状态空间方程离散化(Matlab符号函数)卡尔曼

//

卡尔曼滤波(4):扩展卡尔曼滤波 - 知乎

//

//

matlab 连续系统状态空间表达式的离散化&状态转移矩阵求解_matlab状态方程离散化-CSDN博客

//

//

//

%https://blog.csdn.net/weixin_44051006/article/details/107007916
clear all; clc;
syms R1 R2 C1 C2 Ts Qn  s t Ls  A B

A=[-1/(R1*C1)  0             0;
    0          -1/(R2*C2)   0;
    0            0           0];%系统矩阵

B=[1/C1;
   1/C2;
  -1/Qn];


I = eye(size(A));
Ls = inv(s*I - A);   % INV(X) is the inverse of the square matrix X.
G = ilaplace(Ls,s,t) % Inverse Laplace transform
    
HLs = int(G,t,0,Ts);
H = HLs*B

%% %%%%%%
R1_value=0.0019;
R2_value=0.0035;
C1_value=23340;
C2_value=501270;
R0_value = 0.0037;
Qn_value = 30.23*3600;
Ts_value = 0.1;
t_value = 0.1;

G_value_sym = subs(G,[R1 R2 C1 C2 t Qn],[R1_value R2_value C1_value C2_value Ts_value Qn_value]);
H_value_sym = subs(H,[R1 R2 C1 C2 Ts Qn],[R1_value R2_value C1_value C2_value Ts_value Qn_value]);

G_value = double(G_value_sym)
H_value = double(H_value_sym)




%% %%%%%%
A_value_sym=subs(A,[R1 R2 C1 C2 Qn],[R1_value R2_value C1_value C2_value Qn_value]);
B_value_sym=subs(B,[R1 R2 C1 C2 Qn],[R1_value R2_value C1_value C2_value Qn_value]);
A_value = double(A_value_sym);
B_value = double(B_value_sym);


[G2,H2] = c2d(A_value,B_value,Ts_value)

//

运行结果:

 
G =
 
[exp(-t/(C1*R1)),               0, 0]
[              0, exp(-t/(C2*R2)), 0]
[              0,               0, 1]
 
 
H =
 
-R1*(exp(-Ts/(C1*R1)) - 1)
-R2*(exp(-Ts/(C2*R2)) - 1)
                    -Ts/Qn
 

G_value =

    0.9977         0         0
         0    0.9999         0
         0         0    1.0000


H_value =

   1.0e-05 *

    0.4280
    0.0199
   -0.0919


G2 =

    0.9977         0         0
         0    0.9999         0
         0         0    1.0000


H2 =

   1.0e-05 *

    0.4280
    0.0199
   -0.0919

>> 

//

卡尔曼滤波(Kalman Filter)概念介绍及详细公式推导-CSDN博客

//

/


原文地址:https://blog.csdn.net/zlf19910726/article/details/143710090

免责声明:本站文章内容转载自网络资源,如本站内容侵犯了原著者的合法权益,可联系本站删除。更多内容请关注自学内容网(zxcms.com)!