symmatrix a ,最小单元是矩阵a,可用于求矩阵导数
syms a ,最小单元是标量a
%% 符号矩阵 symmatrix symmatrix2sym
clc;clear;
syms a_b_R [3,3] matrix
syms a_P_b [3,1] matrix
a_b_R
a_P_b
a_b_R(2,3)
a_b_T=[a_b_R,a_P_b;
0,0,0,1]
symmatrix2sym(1/a_b_T)
syms A [3,3] matrix
syms X [3,1] matrix
f = X.'*A*X
H = diff(f,X,X.')
symmatrix2sym(H)
结果:
a_b_R =
a_b_R
a_P_b =
a_P_b
ans =
a_b_R2_3
a_b_T =
vertcat(horzcat(a_b_R, a_P_b), symmatrix([0,0,0,1]))
ans =
[ (a_b_R2_2*a_b_R3_3 - a_b_R2_3*a_b_R3_2)/(a_b_R1_1*a_b_R2_2*a_b_R3_3 - a_b_R1_1*a_b_R2_3*a_b_R3_2 - a_b_R1_2*a_b_R2_1*a_b_R3_3 + a_b_R1_2*a_b_R2_3*a_b_R3_1 + a_b_R1_3*a_b_R2_1*a_b_R3_2 - a_b_R1_3*a_b_R2_2*a_b_R3_1), -(a_b_R1_2*a_b_R3_3 - a_b_R1_3*a_b_R3_2)/(a_b_R1_1*a_b_R2_2*a_b_R3_3 - a_b_R1_1*a_b_R2_3*a_b_R3_2 - a_b_R1_2*a_b_R2_1*a_b_R3_3 + a_b_R1_2*a_b_R2_3*a_b_R3_1 + a_b_R1_3*a_b_R2_1*a_b_R3_2 - a_b_R1_3*a_b_R2_2*a_b_R3_1), (a_b_R1_2*a_b_R2_3 - a_b_R1_3*a_b_R2_2)/(a_b_R1_1*a_b_R2_2*a_b_R3_3 - a_b_R1_1*a_b_R2_3*a_b_R3_2 - a_b_R1_2*a_b_R2_1*a_b_R3_3 + a_b_R1_2*a_b_R2_3*a_b_R3_1 + a_b_R1_3*a_b_R2_1*a_b_R3_2 - a_b_R1_3*a_b_R2_2*a_b_R3_1), -(a_P_b3*a_b_R1_2*a_b_R2_3 - a_P_b3*a_b_R1_3*a_b_R2_2 - a_P_b2*a_b_R1_2*a_b_R3_3 + a_P_b2*a_b_R1_3*a_b_R3_2 + a_P_b1*a_b_R2_2*a_b_R3_3 - a_P_b1*a_b_R2_3*a_b_R3_2)/(a_b_R1_1*a_b_R2_2*a_b_R3_3 - a_b_R1_1*a_b_R2_3*a_b_R3_2 - a_b_R1_2*a_b_R2_1*a_b_R3_3 + a_b_R1_2*a_b_R2_3*a_b_R3_1 + a_b_R1_3*a_b_R2_1*a_b_R3_2 - a_b_R1_3*a_b_R2_2*a_b_R3_1)]
[-(a_b_R2_1*a_b_R3_3 - a_b_R2_3*a_b_R3_1)/(a_b_R1_1*a_b_R2_2*a_b_R3_3 - a_b_R1_1*a_b_R2_3*a_b_R3_2 - a_b_R1_2*a_b_R2_1*a_b_R3_3 + a_b_R1_2*a_b_R2_3*a_b_R3_1 + a_b_R1_3*a_b_R2_1*a_b_R3_2 - a_b_R1_3*a_b_R2_2*a_b_R3_1), (a_b_R1_1*a_b_R3_3 - a_b_R1_3*a_b_R3_1)/(a_b_R1_1*a_b_R2_2*a_b_R3_3 - a_b_R1_1*a_b_R2_3*a_b_R3_2 - a_b_R1_2*a_b_R2_1*a_b_R3_3 + a_b_R1_2*a_b_R2_3*a_b_R3_1 + a_b_R1_3*a_b_R2_1*a_b_R3_2 - a_b_R1_3*a_b_R2_2*a_b_R3_1), -(a_b_R1_1*a_b_R2_3 - a_b_R1_3*a_b_R2_1)/(a_b_R1_1*a_b_R2_2*a_b_R3_3 - a_b_R1_1*a_b_R2_3*a_b_R3_2 - a_b_R1_2*a_b_R2_1*a_b_R3_3 + a_b_R1_2*a_b_R2_3*a_b_R3_1 + a_b_R1_3*a_b_R2_1*a_b_R3_2 - a_b_R1_3*a_b_R2_2*a_b_R3_1), (a_P_b3*a_b_R1_1*a_b_R2_3 - a_P_b3*a_b_R1_3*a_b_R2_1 - a_P_b2*a_b_R1_1*a_b_R3_3 + a_P_b2*a_b_R1_3*a_b_R3_1 + a_P_b1*a_b_R2_1*a_b_R3_3 - a_P_b1*a_b_R2_3*a_b_R3_1)/(a_b_R1_1*a_b_R2_2*a_b_R3_3 - a_b_R1_1*a_b_R2_3*a_b_R3_2 - a_b_R1_2*a_b_R2_1*a_b_R3_3 + a_b_R1_2*a_b_R2_3*a_b_R3_1 + a_b_R1_3*a_b_R2_1*a_b_R3_2 - a_b_R1_3*a_b_R2_2*a_b_R3_1)]
[ (a_b_R2_1*a_b_R3_2 - a_b_R2_2*a_b_R3_1)/(a_b_R1_1*a_b_R2_2*a_b_R3_3 - a_b_R1_1*a_b_R2_3*a_b_R3_2 - a_b_R1_2*a_b_R2_1*a_b_R3_3 + a_b_R1_2*a_b_R2_3*a_b_R3_1 + a_b_R1_3*a_b_R2_1*a_b_R3_2 - a_b_R1_3*a_b_R2_2*a_b_R3_1), -(a_b_R1_1*a_b_R3_2 - a_b_R1_2*a_b_R3_1)/(a_b_R1_1*a_b_R2_2*a_b_R3_3 - a_b_R1_1*a_b_R2_3*a_b_R3_2 - a_b_R1_2*a_b_R2_1*a_b_R3_3 + a_b_R1_2*a_b_R2_3*a_b_R3_1 + a_b_R1_3*a_b_R2_1*a_b_R3_2 - a_b_R1_3*a_b_R2_2*a_b_R3_1), (a_b_R1_1*a_b_R2_2 - a_b_R1_2*a_b_R2_1)/(a_b_R1_1*a_b_R2_2*a_b_R3_3 - a_b_R1_1*a_b_R2_3*a_b_R3_2 - a_b_R1_2*a_b_R2_1*a_b_R3_3 + a_b_R1_2*a_b_R2_3*a_b_R3_1 + a_b_R1_3*a_b_R2_1*a_b_R3_2 - a_b_R1_3*a_b_R2_2*a_b_R3_1), -(a_P_b3*a_b_R1_1*a_b_R2_2 - a_P_b3*a_b_R1_2*a_b_R2_1 - a_P_b2*a_b_R1_1*a_b_R3_2 + a_P_b2*a_b_R1_2*a_b_R3_1 + a_P_b1*a_b_R2_1*a_b_R3_2 - a_P_b1*a_b_R2_2*a_b_R3_1)/(a_b_R1_1*a_b_R2_2*a_b_R3_3 - a_b_R1_1*a_b_R2_3*a_b_R3_2 - a_b_R1_2*a_b_R2_1*a_b_R3_3 + a_b_R1_2*a_b_R2_3*a_b_R3_1 + a_b_R1_3*a_b_R2_1*a_b_R3_2 - a_b_R1_3*a_b_R2_2*a_b_R3_1)]
[ 0, 0, 0, 1]
f =
X.'*A*X
H =
A.' + A
ans =
[ 2*A1_1, A1_2 + A2_1, A1_3 + A3_1]
[A1_2 + A2_1, 2*A2_2, A2_3 + A3_2]
[A1_3 + A3_1, A2_3 + A3_2, 2*A3_3]
>>