This is my code(It is quite simple if you go through it):
t = 0 : 0.001 : 5;t1 = t;syms x(t) x1(t) x2(t) x3(t) x4(t) theta(t) phi(t) zr(t)%% Road profile
zr = sin(t);%% Tire stiffnesses
kt1 = 90000;kt2 = 90000;kt3 = 90000;kt4 = 90000;%% Spring Stiffnesses
ks1 = 48000;ks2 = 48000;ks3 = 48000;ks4 = 48000;%% Damper coefficients
cd1 = 2000;cd2 = 2000;cd3 = 2000;cd4 = 2000;%% Masses
M = 260;m1 = 9;m2 = 9;m3 = 11;m4 = 11;%% Moments of Inertia
Iy = 115;Ix = 80;%% Distances
% Along wheelbase
a1 = 55/100.*1.550;a2 = 1.550 - a1;% Along Track
b1 = 1.150/2;b2 = 1.150/2;%% ODEs
ode1 = M.*diff(diff(x)) + cd1.*(diff(x)-diff(x1) + b1.*diff(phi) - a1.*diff(theta))... + cd2.*(diff(x)-diff(x2) - b2.*diff(phi) - a1.*diff(theta)) + cd3.*(diff(x)-diff(x3) - b1.*diff(phi) + a2.*diff(theta))... + cd4.*(diff(x)-diff(x4) + b2.*diff(phi) + a2.*diff(theta)) + ks1.*(x - x1 + b1.*phi - a1.*theta) ... + ks2.*(x - x2 - b2.*phi - a1.*theta) + ks3.*(x - x3 - b1.*phi + a2.*theta) + ks4.*(x - x4 + b2.*phi + a2.*theta) == 0;ode2 = Ix.*diff(diff(phi)) + b1.*cd1.*(diff(x)-diff(x1) + b1.*diff(phi) - a1.*diff(theta))... - b2.*cd2.*(diff(x)-diff(x2) - b2.*diff(phi) - a1.*diff(theta)) - b1.*cd3.*(diff(x)-diff(x3) - b1.*diff(phi) + a2.*diff(theta))... + b2.*cd4.*(diff(x)-diff(x4) + b2.*diff(phi) + a2.*diff(theta)) + b1.*ks1.*(x - x1 + b1.*phi - a1.*theta) ... - b2.*ks2.*(x - x2 - b2.*phi - a1.*theta) - b1.*ks3.*(x - x3 - b1.*phi + a2.*theta) + b2.*ks4.*(x - x4 + b2.*phi + a2.*theta) == 0;ode3 = Iy.*diff(diff(theta)) - a1.*cd1.*(diff(x)-diff(x1) + b1.*diff(phi) - a1.*diff(theta))... - a1.*cd2.*(diff(x)-diff(x2) - b2.*diff(phi) - a1.*diff(theta)) + a2.*cd3.*(diff(x)-diff(x3) - b1.*diff(phi) + a2.*diff(theta))... + a2.*cd4.*(diff(x)-diff(x4) + b2.*diff(phi) + a2.*diff(theta)) - a1.*ks1.*(x - x1 + b1.*phi - a1.*theta) ... - a1.*ks2.*(x - x2 - b2.*phi - a1.*theta) + a2.*ks3.*(x - x3 - b1.*phi + a2.*theta) + a2.*ks4.*(x - x4 + b2.*phi + a2.*theta) == 0;ode4 = m1.*diff(diff(x1)) - cd1.*(diff(x)-diff(x1) + b1.*diff(phi) - a1.*diff(theta))... - ks1.*(x - x1 + b1.*phi - a1.*theta) + kt1.*(x1 - zr) == 0;ode5 = m2.*diff(diff(x2)) - cd2.*(diff(x)-diff(x2) - b2.*diff(phi) - a1.*diff(theta))... - ks2.*(x - x2 - b2.*phi - a1.*theta) + kt2.*(x2 - zr) == 0;ode6 = m3.*diff(diff(x3)) - cd3.*(diff(x)-diff(x3) - b1.*diff(phi) + a2.*diff(theta))... - ks3.*(x - x3 - b1.*phi + a2.*theta) + kt3.*(x3 - zr) == 0;ode7 = m4.*diff(diff(x4)) - cd4.*(diff(x)-diff(x4) + b2.*diff(phi) + a2.*diff(theta))... - ks4.*(x - x4 + b2.*phi + a2.*theta) + kt4.*(x4 - zr) == 0;ode = [ode1 ; ode2 ; ode3 ; ode4 ; ode5 ; ode6 ; ode7];[v] = odeToVectorField(ode);m = matlabFunction(v);y0 = zeros(14,1);[time, sol] = ode45(m,[0 5],y0);
It keeps showing this error:
Index exceeds the number of array elements (1).
Error in odes (line 80)
[time sol] = ode45(m,[0 5],y0);
Best Answer