please someone solve this error ''Undefined function or variable 'x''.
3 visualizaciones (últimos 30 días)
Mostrar comentarios más antiguos
Meenakshi Tripathi
el 22 de Jul. de 2021
Editada: Yongjian Feng
el 22 de Jul. de 2021
function ross
L = [-1.0828 -1.6242;1.2513 1.8770;-0.0020 -0.0029];
master = [-x(2)-x(3);x(1)+0.5*x(2);2+x(3)*x(1)-4*x(3)];
slave = [-x(5)-x(6);x(4)+x(7)*x(5);2+x(6)*x(4)-4*x(6)]-L*y;
thetahat = 2*x(5)*[-0.2308 0.1538]*y;
y =[12*x(1)+2*x(2)+3*x(3)-12*x(4)-x(5)-3*x(6)-2*x(5)*thetahat;7*x(1)+3.5*x(2)+2*x(3)-7*x(4)-2*x(5)-2*x(6)-3*x(5)*thetahat]
x0 = [1 1 1 -5 -5 -5 0];
tspan= [0:0.001:70];
options = odeset('RelTol',1e-5,'AbsTol',1e-5);
[t,x]=ode45(@ross,tspan,x0,options)
function dxdt = ross(t,x)
dxdt = [master;slave;thetahat]
end
end
error is-
Undefined function or variable 'x'.
Error in ross (line 4)
master = [-x(2)-x(3);x(1)+0.5*x(2);2+x(3)*x(1)-4*x(3)];
3 comentarios
Rik
el 22 de Jul. de 2021
If you have trouble with Matlab basics you may consider doing the Onramp tutorial (which is provided for free by Mathworks).
Respuesta aceptada
Yongjian Feng
el 22 de Jul. de 2021
Editada: Yongjian Feng
el 22 de Jul. de 2021
It seems like lines are all messed up. Do it make more sense to re-arrange them like this:
x0 = [1 1 1 -5 -5 -5 0];
tspan= [0:0.001:70];
options = odeset('RelTol',1e-5,'AbsTol',1e-5);
[t,x]=ode45(@ross,tspan,x0,options);
% This looks more like the function. Now x and t are input parameters, and
% they can be used inside the function
function dxdt = ross(t,x)
%function ross
L = [-1.0828 -1.6242;1.2513 1.8770;-0.0020 -0.0029];
master = [-x(2)-x(3);x(1)+0.5*x(2);2+x(3)*x(1)-4*x(3)];
y =[12*x(1)+2*x(2)+3*x(3)-12*x(4)-x(5)-3*x(6)-2*x(5)*thetahat;7*x(1)+3.5*x(2)+2*x(3)-7*x(4)-2*x(5)-2*x(6)-3*x(5)*thetahat];
slave = [-x(5)-x(6);x(4)+x(7)*x(5);2+x(6)*x(4)-4*x(6)]-L*y;
thetahat = 2*x(5)*[-0.2308 0.1538]*y;
%y =[12*x(1)+2*x(2)+3*x(3)-12*x(4)-x(5)-3*x(6)-2*x(5)*thetahat;7*x(1)+3.5*x(2)+2*x(3)-7*x(4)-2*x(5)-2*x(6)-3*x(5)*thetahat]
% The following lines moved up.
%x0 = [1 1 1 -5 -5 -5 0];
%tspan= [0:0.001:70];
%options = odeset('RelTol',1e-5,'AbsTol',1e-5);
%[t,x]=ode45(@ross,tspan,x0,options)
% function dxdt = ross(t,x)
dxdt = [master;slave;thetahat]
%end
end
2 comentarios
Rik
el 22 de Jul. de 2021
Actually the relevant defnition of x is in the function signature:
function dxdt = ross(t,x)
% ^ here
Yongjian Feng
el 22 de Jul. de 2021
Editada: Yongjian Feng
el 22 de Jul. de 2021
You are right! Modified again.
Más respuestas (0)
Ver también
Community Treasure Hunt
Find the treasures in MATLAB Central and discover how the community can help you!
Start Hunting!