Info
此问题已关闭。 请重新打开它进行编辑或回答。
Index exceeds matrix dimensions
1 次查看(过去 30 天)
显示 更早的评论
Hello I am working on a double inverted pendulum. I come up with this error 'index exceeds Matrix Dimensions' Error in Test_1>pend (line 8) x3=x(3);
function pend1
pendsss
end
function dx= pend(t,x)
x1=x(1);
x2=x(2);
x3=x(3);
x4=x(4);
% parameters
m1=1;
m2=1;
a1=0.5;
L1=1;
a2=0.5;
L2=1;
g=9.8;
I1=0.0126;
I2=0.0185;
d1=I1+a1+a1+m1+L1*L1*m2;
d2=a2*L1*m2;
d3=(a1*m1+L1*m2)*g;
d4=a2*L1*m2;
d5=a1*m1+L1*m2;
d6=I2+a2*a2*m2;
d7=a2*m2*g;
d8=a2*m2;
e1=0.015;
e2=0.015;
D=[d1 d2*cos(x1-x3);d4*cos(x1-x3) d6];
C=[d4*sin(x1-x3)*x4;-d4*sin(x1-x3)*x2];
G=[d3*sin(x1);d7*sin(x3)];
F=[-d5*cos(x1);-d8*cos(x3)];
I= inv(D);
dx=I*(-C-G+F);
end
function pendsss
tspan=[0 1]; %time span
ic=[0;pi];%initial conditions
[t,x]=ode45(@pend,tspan,ic);
plot (t,x),
grid on
xlabel('Time(s)');
legend('theta1', 'theta2')
end
0 个评论
回答(1 个)
Jan
2017-12-11
编辑:Jan
2017-12-11
If the initial conditions have 2 components "ic=[0;pi]", why do you think, that the state variable has 4? The size of x in pend is the same as the size of the initial conditions.
By the way: This is a bad idea:
I = inv(D);
dx = I*(-C-G+F);
As explained in doc inv, calculating the inverse explicitly is slower and less accurate than using the slash operator:
dx = D \ (-C -G + F)
1 个评论
此问题已关闭。
另请参阅
Community Treasure Hunt
Find the treasures in MATLAB Central and discover how the community can help you!
Start Hunting!