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!