MATLAB Answers

Error in repetition of for loop

1 view (last 30 days)
Fu Xiangli
Fu Xiangli on 7 Sep 2016
Edited: mbonus on 8 Sep 2016
Hi guys. I have a code below:
if p && u <= length(r) && r(p) > r(n) && r(u) >= r(p);
is_upslope = true;
However, when my u is greater than the length(r), it still gives me is_upslope = true. May I know what is the problem? Thanks

  1 Comment

per isakson
per isakson on 7 Sep 2016
I cannot reproduce your result. What values do your variables have?

Sign in to comment.

Answers (1)

mbonus
mbonus on 7 Sep 2016
Edited: mbonus on 7 Sep 2016
I believe that your second test of <=length(r) is being tested against a logical 1. This is due to the fact that p && u is being evaluated first which returns a logical 1 assuming they are both nonzero. so the test actually ends up seeing
1 <= length(r) ...
instead you need to format it like this: (also parenthesis while not required make it easier to read)
if (p <= length(r)) && (u <= length(r)) && (r(p) > r(n)) && (r(u) >= r(p))

  2 Comments

mbonus
mbonus on 8 Sep 2016
Oh wow I didn't realize MATLAB did it like that, probably because I always use parenthesis, thank you.

Sign in to comment.