Write code and driver MR damper

8 visualizaciones (últimos 30 días)
kerollos
kerollos el 26 de Abr. de 2023
Respondida: Sam Chak el 26 de Abr. de 2023
@function function ret= MR(t,y)
ret=zeros(4,1);
alva=y(1);
c1=y(2);
co=y(3);
u=y(4);
coa=784; cob=1803;
c1a=14649; c1b=34622;
alvaa=12441; alvab=38430;
eff=190;
ret(1) = alvaa+alvab*u;
ret(2) = c1a+c1b*u;
ret(3) = coa+cob*u;
ret(4) = -eff*(u-v);
end
@driverclear all
clc
tRange = [-750,750];
yZero = [0,0.2,2];
[myT, myY]=ode45(@MR,tRange,yZero);
a = myY(:,1);
b = myY(:,2);
c = myY(:,3);
d = myY(:,4);
figure(1)
plot(myT,myY);
xlabel('time(s)');
ylabel('Force(N)');
z1=a.*d;
z2=b.*d;
z3=c.*d;
And here is the error message I get :
Attempted to access y(4); index out of bounds because numel(y)=3.
Error in MR (line 6)
u=y(4);
Error in odearguments (line 87)
f0 = feval(ode,t0,y0,args{:}); % ODE15I sets args{1} to yp0.
Error in ode45 (line 113)
[neq, tspan, ntspan, next, t0, tfinal, tdir, y0, f0, odeArgs, odeFcn, ...
Error in driveMR (line 7)
[myT, myY]=ode45(@MR,tRange,yZero);

Respuestas (1)

Sam Chak
Sam Chak el 26 de Abr. de 2023
The code can run now. However, you have to review the initial values and define for v.
The system looks unstable. Is the instability part of the intended design?
tRange = [-750, 750];
yZero = [0, 0.2, 2, 0]; % <-- there are 4 states, so there must be 4 initial values
[myT, myY] = ode45(@MR, tRange, yZero);
a = myY(:,1);
b = myY(:,2);
c = myY(:,3);
d = myY(:,4);
figure(1)
plot(myT, myY), grid on
xlabel('time(s)');
ylabel('Force(N)');
function ret = MR(t, y)
ret = zeros(4,1);
alva = y(1);
c1 = y(2);
co = y(3);
u = y(4);
coa = 784;
cob = 1803;
c1a = 14649;
c1b = 34622;
alvaa = 12441;
alvab = 38430;
eff = 190;
v = 0; % <-- you need to define for v
ret(1) = alvaa + alvab*u;
ret(2) = c1a + c1b*u;
ret(3) = coa + cob*u;
ret(4) = - eff*(u - v);
end

Categorías

Más información sobre Programming en Help Center y File Exchange.

Community Treasure Hunt

Find the treasures in MATLAB Central and discover how the community can help you!

Start Hunting!

Translated by