我在matlab中有以下脚本,目标是计算$f_1,f_2,f_3,f_4$
的jacobian,它应该给我一个4乘4矩阵,但我得到一个7乘4 $矩阵。我不确定这个代码应该有什么问题。
syms m M L J p_x p_theta theta X g K_m K_g r V_in R_m;
h= (m+M)*(m*L^2/4+J) - (m*L/2 * cos(theta))^2;
f_1 = [1/h * [ (m*L^2/4+J)*p_x + m*L/2 cos(theta)* p_theta]];
f_2 = [1/h * [ (m*L/2 * cos(theta))*p_x + (m+M)*p_theta]];
F = K_m *K_g/r *[ (V_in -K_m*K_g * f_1/r)/R_m];
f_3 = F;
f_4 = m*L/2 *sin (theta)*(f_1*f_2+g);
J_1=jacobian([f_1,f_2,f_3,f_4],[X;theta;p_x;p_theta]);
subs(J_1,[X,theta,p_x,p_theta],[0,0,0,0])
答案 0 :(得分:2)
我唯一能看到的是你在定义f_1
时错过了一个操作员。你的意思是1x2阵列吗?如果没有,我建议如下(我在*
和L/2
之间插入cos(theta)
):
f_1 = [1/h * [ (m*L^2/4+J)*p_x + m*L/2 * cos(theta)* p_theta]];
根据需要,这将为最终答案提供4x4矩阵。