Logical indexing: More than two conditions

조회 수: 97 (최근 30일)
balandong
balandong 2016년 12월 2일
댓글: balandong 2016년 12월 2일
Say,I have a vector of x, and each particular x that according to the rule 1) less than zero, 2) greater than zero, and 3) equal to 2, will satisfy different equation. I know, by using simple IF-Else condition, we can have the framework as below. x = rand(-3,3)
Case 1
if x > 0 y=x^3 elseif x < 0 y=x^2 elseif x = 2 y = x else
However, I am interested to use the logical indexing. I know, for a two conditions, the arrangement such that
Case 2
cond1 = (x > 0) | (x < 0) y = cond1.*(x^3) + ~cond1.*(x^2);
Thus, using the same logic, I tried to modified the above logical indexing to fit the 3 conditions such as
Case 3
cond1 = (x > 0) | (x < 0) | (x == 2) y = cond1.*(x^3) + ~cond1.*(x^2)+ ~cond1.*(2); y = cond1.*(x^3) + ~cond1.*(x^2);
However, I am not able to produce accurate result for the Case 3, any idea how to implement logical-indexing for more than 2 conditions.
Thanks in advance

채택된 답변

Mischa Kim
Mischa Kim 2016년 12월 2일
Do you mean
x = -10:10;
y = (x>=0 & x~=2).*x.^3 + (x<0).*x.^2 + (x==2).*x
  댓글 수: 1
balandong
balandong 2016년 12월 2일
Hi Mischa, Although different from the syntax such as in Case 2 and Case 3, but your suggested code does the trick. Thanks for the quick response.

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

추가 답변 (0개)

카테고리

Help CenterFile Exchange에서 Linear Algebra에 대해 자세히 알아보기

Community Treasure Hunt

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

Start Hunting!

Translated by