Why do I get this result??

Hello
I have a problem with this code
k=2*A+3*B
if k<3.65
fr='inf'
elseif 3.65<k<=4.35
fr='moy'
elseif k>4.35
fr='sup'
end
why i get this result 'moy'?? it must be 'sup'
k =
6.4582
fr =
moy
Can you help me to correct this code.

 채택된 답변

Evan
Evan 2012년 11월 7일
편집: Evan 2012년 11월 7일

0 개 추천

The below line is the culprit:
elseif 3.65<k<=4.35
Specifying inequalities in matlab isn't done in the same notation as you might when writing them. If you need to find when a value is between an upper and lower bound, do something like this:
elseif 3.65 <= k && k <= 4.35
The way you have it, matlab evaluates the statement from left to right. So, if k = 6.4582, these will be the steps matlab performs:
1. (3.65 < k) <= 4.35
2. (1) <= 4.35
3. 1
Because the expression in parenthesis is true, it evaluates to "1." This leaves 1 <= 4.35, which will also return 1. But your value was 6.4582, meaning the code didn't do what you intended!
Instead, include each condition in your if statement, separating them with && symbols.

추가 답변 (2개)

David Barry
David Barry 2012년 11월 7일

1 개 추천

Try this
k=2*A+3*B
if k<3.65
fr='inf'
elseif k >= 3.65 && k<= 4.35
fr='moy'
elseif k>4.35
fr='sup'
end

댓글 수: 3

David Barry
David Barry 2012년 11월 7일
Looks like Evan beat me to it. && is MATLAB command for logical AND.
David Barry
David Barry 2012년 11월 7일
Also note that I have changed your code to cope when k = 3.65
Evan
Evan 2012년 11월 7일
Good catch. I didn't notice that. I've updated my post to account for that issue, but credit goes to you. :)

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

카테고리

제품

태그

질문:

2012년 11월 7일

Community Treasure Hunt

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

Start Hunting!

Translated by