我正在尝试在Matlab中实现一个if
条件,当两个对象彼此相距30米时,应该加速直到100 m,然后它才恢复正常。当距离小于100 m时,该条件不起作用,只有当距离等于或小于29 m时,直到100 m。
正如我所读过的,Matlab只会从左边开始执行第一条语句,因此我本来打算分两步编写条件,但是卡住了。
这是我到目前为止所做的:
%%%%functia ----osc----simplu
function yprim=osccar1(t,y)
global dist1
if dist1<30
antr=1;
elseif dist1>30
antr=1;
end
if dist1<100
bntr=1;
else
bntr=2;
end
% if dist1<30 && (dist1<100)
% indth=1;
% elseif dist1<100
% indth=1;
% else
% indth=0;
% end
magn=(y(1)^2+y(2)^2+y(3)^2)^(3/2);
yprim=zeros(6,1);
% if indth==1
if antr==bntr
yprim(1,1)=y(4);
yprim(2,1)=y(5)-0.001;
yprim(3,1)=y(6);
yprim(4,1)=double(y(1)/magn);
yprim(5,1)=double(y(2)/magn);
yprim(6,1)=double(y(3)/magn);
else
yprim(1,1)=y(4);
yprim(2,1)=y(5);
yprim(3,1)=y(6);
yprim(4,1)=double(y(1)/magn);
yprim(5,1)=double(y(2)/magn);
yprim(6,1)=double(y(3)/magn);
end
答案 0 :(得分:1)
也许我简化了这个问题,但答案不仅仅在于:
if (dist1 < 30)
accelerate = 1;
elseif (dist1 > 100)
accelerate = 0;
end
如果dist1
低于30,请加速。如果dist1
大于100,请停止加速。如果dist1
在30到100之间,请不要执行任何操作。要么,我们比以前加速了,因此dist1
上升了,或者我们没有加速,dist1
下降了。
当然,只有accelerate
的状态(也)在某处仍然存在时,这才成立。如果没有,请提供更多有关如何使用此功能以及在何处使用此上下文的信息。
也:
正如我所读过的,matlab只会从左边的第一个语句开始[...]