If Statement not working

조회 수: 12 (최근 30일)
isabella Anglin
isabella Anglin 2020년 10월 16일
댓글: Ameer Hamza 2020년 10월 16일
Hello,
I am new to matlab and have a very, very basic issue. This is a simplified function, but it illustrates the problem I have in my other function.
Matlab seems to bypass my if conditions. Here is the function:
function y = functry(x)
Speed = 100;
if (x> 100)
Speed = 50;
end
y = Speed * x;
end
However, the Speed is taken to be 100 even when I input a high range, for example:
y_try = functry(1:150)
plot(1:150, y_try)
Here is still get a linear plot and no change for the Speed when x>100.
Any help would be much appreciated! Thank you!

채택된 답변

Ameer Hamza
Ameer Hamza 2020년 10월 16일
편집: Ameer Hamza 2020년 10월 16일
If x is a vector then the line
if (x> 100)
does not work as expected. The correct syntax is
function y = functry(x)
Speed1 = 100;
Speed2 = 50;
mask = x > 100;
y = (~mask)*Speed1.*x + mask*Speed2.*x;
end
  댓글 수: 4
isabella Anglin
isabella Anglin 2020년 10월 16일
Okay great thank you!
However, eventually in my function i'll want to have multiple "Speeds". Do i just make additional masks then?
Ameer Hamza
Ameer Hamza 2020년 10월 16일
Yes. Let me show you a more general approach
function y = functry(x)
Speed1 = 100;
Speed2 = 50;
mask1 = x < 100;
mask2 = x >= 100;
y = (mask1)*Speed1.*x + mask2*Speed2.*x;
end
Just keep making a mask like this, and it will work. Note that If you want to have a condition that x is between 150 to 250, then the correct syntax to write that is
mask = (150 < x) & (x < 250) % mask = 150 < x < 250 is a common mistake.

댓글을 달려면 로그인하십시오.

추가 답변 (0개)

카테고리

Help CenterFile Exchange에서 Entering Commands에 대해 자세히 알아보기

Community Treasure Hunt

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

Start Hunting!

Translated by