How do I make an if, elseif, else statement?

if 0<x<10
y=4*x
elseif 10<x<40
y = 10*x
else
y = 500
end
I would expect test cases of
x= -1
x= 5
x= 30
x=100

2 件のコメント

Jan
Jan 2011 年 6 月 14 日
Think of the case of x==10, e.g. by "10<=x & x < 40".
Walter Roberson
Walter Roberson 2011 年 6 月 14 日
Good point, Jan.
zizo, Jan's point here is one that I pointed out to you before, when you asked a question a month ago, http://www.mathworks.com/matlabcentral/answers/7479-just-q

サインインしてコメントする。

 採用された回答

Paulo Silva
Paulo Silva 2011 年 6 月 14 日

2 投票

The correct way to do the conditions is this:
if 0<x & x<10
y=4*x
elseif 10<x & x<40
y=10*x
else
y=500
end

その他の回答 (1 件)

Sean de Wolski
Sean de Wolski 2011 年 6 月 14 日

1 投票

Or the vectorized solution:
y = repmat(500,size(x));
idx = 0<x&x<10;
y(idx) = 4*x(idx);
idx = 10<x&x<40;
y(idx) = 10*x(idx);

3 件のコメント

Paulo Silva
Paulo Silva 2011 年 6 月 14 日
good one :) also one thing that I never do is 0<x&x<10 , was afraid it might result on error but guess not.
Matt Fig
Matt Fig 2011 年 6 月 14 日
@Paulo, perhaps this is better?
and(0<x,x<10)
Sean de Wolski
Sean de Wolski 2011 年 6 月 14 日
Is it just the order of operations that worries you?
BTW. I'm not even sure my approach would be faster than with the accelerated for-loops.

サインインしてコメントする。

カテゴリ

タグ

タグが未入力です。

Community Treasure Hunt

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

Start Hunting!

Translated by