如何基于多个条件创建if语句?

时间:2019-02-25 02:26:06

标签: matlab if-statement

我正在尝试在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

1 个答案:

答案 0 :(得分:1)

也许我简化了这个问题,但答案不仅仅在于:

if (dist1 < 30)
  accelerate = 1;
elseif (dist1 > 100)
  accelerate = 0;
end

如果dist1低于30,请加速。如果dist1大于100,请停止加速。如果dist1在30到100之间,请不要执行任何操作。要么,我们比以前加速了,因此dist1上升了,或者我们没有加速,dist1下降了。

当然,只有accelerate的状态(也)在某处仍然存在时,这才成立。如果没有,请提供更多有关如何使用此功能以及在何处使用此上下文的信息。

也:

  

正如我所读过的,matlab只会从左边的第一个语句开始[...]

Logical Short-Circuiting有点不同。