2017-04-17 20 views
0

私はmatlabに次のスクリプトを持っています。目的はヤコビ行列$f_1,f_2,f_3,f_4$を計算することです。これは私に4行4列の行列を与えるはずですが、代わりに7行4列$行列を得ます。私はそれがうまくいくはずのこのコードで何が間違っているのか分かりません。matlabで行列のヤコビ行列を見つける

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]) 

答えて

2

私が見ることができる唯一のことは、あなたがf_1を定義する際にオペレータを逃したということです。あなたはそれが1x2配列であることを意味しましたか?あなたが望むよう

f_1 = [1/h * [ (m*L^2/4+J)*p_x + m*L/2 * cos(theta)* p_theta]]; 

これは、最終的な答えのための4×4行列を与える:いない場合は、私は次のようなものをお勧めしたい(私は*L/2間とcos(theta)挿入しました)。

関連する問題