Please help! Error using sym/subsindex
이전 댓글 표시
I'm working on a project but I keep on getting this error:
>> p
Error using sym/subsindex (line 825)
Invalid indexing or function definition. Indexing must follow MATLAB indexing. Function arguments must be symbolic variables, and
function body must be sym expression.
Error in sym/subsref (line 870)
R_tilde = builtin('subsref',L_tilde,Idx);
Error in p (line 26)
J = jacobian([p_2,p_3,p_4,p_5,q_2,q_3,q_5],[delta_2, delta_3, delta_4, delta_5, V_2, V_3, V_5]);
Whenever I run the following code:
syms delta_2 delta_3 delta_4 delta_5 V_2 V_3 V_5 p_2 p_3 p_4 p_5 q_2 q_3 q_5;
p_2 = 1.05*abs(V_2)*(-cos(delta_2)+ 2*sin(delta_2))+ 3*abs(V_2)^2 + abs(V_2)*abs(V_3)*5.5*sin(delta_2-delta_3) +(1.05*abs(V_2))*(-2*cos(delta_2-delta_4)+4*sin(delta_2-delta_4));
p_3 = abs(V_3)* abs(V_2)*(5.5* sin(delta_3-delta_2));
p_4 = (1.05)*abs(V_2)*(-2*cos(delta_4-delta_2)+ 4*sin(delta_4-delta_2))+3*(abs(1.05))^2 + abs(1.05)*abs(V_5)*(-cos(delta_4-delta_5) + 2*sin(delta_4-delta_5));
p_5 = 1.05*abs(V_5)*(-2*cos(delta_5)+4*sin(delta_5))+ (1.05*abs(V_5)*(-cos(delta_5)+2*sin(delta_5)))+ 3*abs(V_5)^2;
q_2 = (1.05)*abs(V_2)*(-sin(delta_2)-2*cos(delta_2)) + 12.05*abs(V_2)^2 - abs(V_3)*abs(V_2)*(5.5*cos(delta_2-delta_3)) + 1.05*abs(V_2)*(-2*sin(delta_2-delta_4)-4*cos(delta_2-delta_4));
q_3 = -abs(V_3)*abs(V_2)*(5.5*cos(delta_3-delta_2))+5*abs(V_3)^2;
q_5 = 1.05*abs(V_5)*(-2*sin(delta_5)-4*cos(delta_5))+ 1.05*abs(V_5)*(-sin(delta_5-delta_4)-2*cos(delta_5-delta_4))+ 6*abs(V_5)^2;
J = jacobian([p_2,p_3,p_4,p_5,q_2,q_3,q_5],[delta_2, delta_3, delta_4, delta_5, V_2, V_3, V_5]);
% J = jacobian([ (1.05*abs(V_2)*(-cos(delta_2)+ 2*sin(delta_2)))+ 3*abs(V_2)^2 + abs(V_2)*abs(V_3)*5.5*sin(delta_2-delta_3) +(1.05*abs(V_2))*(-2*cos(delta_2-delta_4)+4*sin(delta_2-delta_4)),
% abs(V_3)* abs(V_2)*(5.5* sin(delta_3-delta_2)),
% (1.05)*abs(V_2)*(-2*cos(delta_4-delta_2)+ 4*sin(delta_4-delta_2))+3*(abs(1.05))^2 + abs(1.05)*abs(V_5)*(-cos(delta_4-delta_5) + 2*sin(delta_4-delta_5)),
% 1.05*abs(V_5)*(-2*cos(delta_5)+4*sin(delta_5))+ (1.05*abs(V_5)*(-cos(delta_5)+2*sin(delta_5)))+ 3*abs(V_5)^2,
% (1.05)*abs(V_2)*(-sin(delta_2)-2*cos(delta_2)) + 12.05*abs(V_2)^2 - abs(V_3)*abs(V_2)*(5.5*cos(delta_2-delta_3)) + 1.05*abs(V_2)*(-2*sin(delta_2-delta_4)-4*cos(delta_2-delta_4)),
% -abs(V_3)*abs(V_2)*(5.5*cos(delta_3-delta_2))+5*abs(V_3)^2,
% 1.05*abs(V_5)*(-2*sin(delta_5)-4*cos(delta_5))+ 1.05*abs(V_5)*(-sin(delta_5-delta_4)-2*cos(delta_5-delta_4))+ 6*abs(V_5)^2], [delta_2,delta_3, delta_4, delta_5, V_2, V_3, V_5]);
I tried a lot of different things and I've looked at a lot of different online resources, but none of them seem to do the trick!
I've tried directly inputting the formulas into the jacobian (right now it is commented out) and I've tried having syms with just the deltas and V's.
If anyone could give me any input on how to debug this, I would be so thankful!! I just need a pointer as to where to start!! Thank you.
답변 (1개)
madhan ravi
2018년 12월 11일
편집: madhan ravi
2018년 12월 11일
I didn't get any error while running your code.
The error arises when you index a variable using symbolic variable.
>> syms delta_2 delta_3 delta_4 delta_5 V_2 V_3 V_5 p_2 p_3 p_4 p_5 q_2 q_3 q_5;
p_2 = 1.05*abs(V_2)*(-cos(delta_2)+ 2*sin(delta_2))+ 3*abs(V_2)^2 + abs(V_2)*abs(V_3)*5.5*sin(delta_2-delta_3) +(1.05*abs(V_2))*(-2*cos(delta_2-delta_4)+4*sin(delta_2-delta_4));
p_3 = abs(V_3)* abs(V_2)*(5.5* sin(delta_3-delta_2));
p_4 = (1.05)*abs(V_2)*(-2*cos(delta_4-delta_2)+ 4*sin(delta_4-delta_2))+3*(abs(1.05))^2 + abs(1.05)*abs(V_5)*(-cos(delta_4-delta_5) + 2*sin(delta_4-delta_5));
p_5 = 1.05*abs(V_5)*(-2*cos(delta_5)+4*sin(delta_5))+ (1.05*abs(V_5)*(-cos(delta_5)+2*sin(delta_5)))+ 3*abs(V_5)^2;
q_2 = (1.05)*abs(V_2)*(-sin(delta_2)-2*cos(delta_2)) + 12.05*abs(V_2)^2 - abs(V_3)*abs(V_2)*(5.5*cos(delta_2-delta_3)) + 1.05*abs(V_2)*(-2*sin(delta_2-delta_4)-4*cos(delta_2-delta_4));
q_3 = -abs(V_3)*abs(V_2)*(5.5*cos(delta_3-delta_2))+5*abs(V_3)^2;
q_5 = 1.05*abs(V_5)*(-2*sin(delta_5)-4*cos(delta_5))+ 1.05*abs(V_5)*(-sin(delta_5-delta_4)-2*cos(delta_5-delta_4))+ 6*abs(V_5)^2;
J = jacobian([p_2,p_3,p_4,p_5,q_2,q_3,q_5],[delta_2, delta_3, delta_4, delta_5, V_2, V_3, V_5]);
>> J
J =
[ (21*abs(V_2)*(4*cos(delta_2 - delta_4) + 2*sin(delta_2 - delta_4)))/20 + (21*abs(V_2)*(2*cos(delta_2) + sin(delta_2)))/20 + (11*abs(V_2)*abs(V_3)*cos(delta_2 - delta_3))/2, -(11*abs(V_2)*abs(V_3)*cos(delta_2 - delta_3))/2, -(21*abs(V_2)*(4*cos(delta_2 - delta_4) + 2*sin(delta_2 - delta_4)))/20, 0, 6*abs(V_2)*sign(V_2) - (21*sign(V_2)*(cos(delta_2) - 2*sin(delta_2)))/20 - (21*sign(V_2)*(2*cos(delta_2 - delta_4) - 4*sin(delta_2 - delta_4)))/20 + (11*abs(V_3)*sign(V_2)*sin(delta_2 - delta_3))/2, (11*abs(V_2)*sign(V_3)*sin(delta_2 - delta_3))/2, 0]
[ -(11*abs(V_2)*abs(V_3)*cos(delta_2 - delta_3))/2, (11*abs(V_2)*abs(V_3)*cos(delta_2 - delta_3))/2, 0, 0, -(11*abs(V_3)*sign(V_2)*sin(delta_2 - delta_3))/2, -(11*abs(V_2)*sign(V_3)*sin(delta_2 - delta_3))/2, 0]
[ -(21*abs(V_2)*(4*cos(delta_2 - delta_4) - 2*sin(delta_2 - delta_4)))/20, 0, (21*abs(V_2)*(4*cos(delta_2 - delta_4) - 2*sin(delta_2 - delta_4)))/20 + (21*abs(V_5)*(2*cos(delta_4 - delta_5) + sin(delta_4 - delta_5)))/20, -(21*abs(V_5)*(2*cos(delta_4 - delta_5) + sin(delta_4 - delta_5)))/20, -(21*sign(V_2)*(2*cos(delta_2 - delta_4) + 4*sin(delta_2 - delta_4)))/20, 0, -(21*sign(V_5)*(cos(delta_4 - delta_5) - 2*sin(delta_4 - delta_5)))/20]
[ 0, 0, 0, (21*abs(V_5)*(2*cos(delta_5) + sin(delta_5)))/20 + (21*abs(V_5)*(4*cos(delta_5) + 2*sin(delta_5)))/20, 0, 0, 6*abs(V_5)*sign(V_5) - (21*sign(V_5)*(cos(delta_5) - 2*sin(delta_5)))/20 - (21*sign(V_5)*(2*cos(delta_5) - 4*sin(delta_5)))/20]
[ (11*abs(V_2)*abs(V_3)*sin(delta_2 - delta_3))/2 - (21*abs(V_2)*(cos(delta_2) - 2*sin(delta_2)))/20 - (21*abs(V_2)*(2*cos(delta_2 - delta_4) - 4*sin(delta_2 - delta_4)))/20, -(11*abs(V_2)*abs(V_3)*sin(delta_2 - delta_3))/2, (21*abs(V_2)*(2*cos(delta_2 - delta_4) - 4*sin(delta_2 - delta_4)))/20, 0, (241*abs(V_2)*sign(V_2))/10 - (21*sign(V_2)*(2*cos(delta_2) + sin(delta_2)))/20 - (21*sign(V_2)*(4*cos(delta_2 - delta_4) + 2*sin(delta_2 - delta_4)))/20 - (11*abs(V_3)*sign(V_2)*cos(delta_2 - delta_3))/2, -(11*abs(V_2)*sign(V_3)*cos(delta_2 - delta_3))/2, 0]
[ (11*abs(V_2)*abs(V_3)*sin(delta_2 - delta_3))/2, -(11*abs(V_2)*abs(V_3)*sin(delta_2 - delta_3))/2, 0, 0, -(11*abs(V_3)*sign(V_2)*cos(delta_2 - delta_3))/2, 10*abs(V_3)*sign(V_3) - (11*abs(V_2)*sign(V_3)*cos(delta_2 - delta_3))/2, 0]
[ 0, 0, (21*abs(V_5)*(cos(delta_4 - delta_5) + 2*sin(delta_4 - delta_5)))/20, - (21*abs(V_5)*(cos(delta_4 - delta_5) + 2*sin(delta_4 - delta_5)))/20 - (21*abs(V_5)*(2*cos(delta_5) - 4*sin(delta_5)))/20, 0, 0, 12*abs(V_5)*sign(V_5) - (21*sign(V_5)*(2*cos(delta_4 - delta_5) - sin(delta_4 - delta_5)))/20 - (21*sign(V_5)*(4*cos(delta_5) + 2*sin(delta_5)))/20]
>>
댓글 수: 4
lois lee
2018년 12월 11일
madhan ravi
2018년 12월 11일
hey when you ask a question post the full code these are the ones you added up now , attach your script file
lois lee
2018년 12월 11일
madhan ravi
2018년 12월 11일
Remove loop and don’t name a variable jacobian , I didn‘t get any error
카테고리
도움말 센터 및 File Exchange에서 Common Operations에 대해 자세히 알아보기
Community Treasure Hunt
Find the treasures in MATLAB Central and discover how the community can help you!
Start Hunting!