状态空间方程离散化(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博客
//
/