Skipping elseif when first condition is true

I currently have the following scheme:
if (a =0)
q = 4
elseif (b=0)
q = 5
rest of code
end
The problem is, in the case a =0 the program does not work properly, as it simply skips the "rest of code".
I have tried moving the "end" before rest of code, but that does not work for the purposes of this.
Is there a way such that in the case a =0, it sets q=4, then just doesn't consider the elseif (b=0) case and continues onto the rest of the code?
Thanks!

댓글 수: 1

Stephen23
Stephen23 2019년 1월 21일
편집: Stephen23 2019년 1월 21일
"The problem is, in the case a =0 the program does not work properly"
Read the MATLAB documentation to learn what operator to use for logical equivalence:
And for other logical operators:
Guessing is not a very efficient way to write code.

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

답변 (2개)

Image Analyst
Image Analyst 2019년 1월 21일

0 개 추천

That's not how you check if a equals zero. You need to use double equals. A single equals is assignment, NOT comparison. Try this:
if (a == 0)
q = 4
elseif (b == 0)
q = 5
rest of code
end
Steven Lord
Steven Lord 2019년 1월 21일

0 개 추천

If you want to execute the rest of the code regardless of whether a was equal to 0 or b was equal to 0, take it out of the if / elseif / end block entirely.
if (a ==0)
q = 4
elseif (b==0)
q = 5
end
rest of code
If you need to throw an error if neither a nor b was 0, use else and throw an error inside the else.
if (a ==0)
q = 4
elseif (b==0)
q = 5
else
error('Expected either a or b to be 0')
end
rest of code

카테고리

도움말 센터File Exchange에서 Debugging and Improving Code에 대해 자세히 알아보기

태그

질문:

g
g
2019년 1월 21일

답변:

2019년 1월 21일

Community Treasure Hunt

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

Start Hunting!

Translated by