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

562 ビュー (過去 30 日間)
zizo
zizo 2011 年 6 月 14 日
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 日
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 日
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 件のコメント
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.

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

カテゴリ

Help Center および File ExchangeIntroduction to Installation and Licensing についてさらに検索

タグ

タグが未入力です。

Community Treasure Hunt

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

Start Hunting!

Translated by