Как создать оператор if на основе нескольких условий? - PullRequest
0 голосов
/ 25 февраля 2019

Я пытаюсь реализовать условие if в Matlab, что, когда два объекта находятся на расстоянии 30 метров друг от друга, они должны ускоряться до 100 метров, и после этого они должны вести себя нормально.Условие не должно работать, когда расстояние становится меньше 100 м, но только когда оно достигает 29 м или ниже, до 100 м.

Как я читал, Matlab будет принимать только первое утверждение слева, поэтомуЯ думал написать условие в 2 этапа, но застрял.

Это то, что я сделал до сих пор:

%%%%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 голосов
/ 25 февраля 2019

Возможно, я слишком упрощаю проблему, но это не просто ответ:

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

Если dist1 меньше 30, ускориться.Если dist1 выше 100, прекратите ускорение.Если dist1 между 30 и 100, ничего не делайте.Либо мы все еще ускоряемся до этого и, таким образом, dist1 растет, или мы не ускоряемся, а dist1 падает.

Конечно, это верно только в том случае, если состояние accelerate(также) сохранился где-то.Если нет, пожалуйста, предоставьте больше контекста о том, как и где используется эта функция.

Также:

Как я читал, matlab будет принимать только первое утверждение слева[...]

Логическое короткое замыкание немного отличается.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...