Why do I get this result??
2 visualizaciones (últimos 30 días)
Mostrar comentarios más antiguos
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.
0 comentarios
Respuesta aceptada
Evan
el 7 de Nov. de 2012
Editada: Evan
el 7 de Nov. de 2012
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.
0 comentarios
Más respuestas (2)
David Barry
el 7 de Nov. de 2012
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 comentarios
Evan
el 7 de Nov. de 2012
Good catch. I didn't notice that. I've updated my post to account for that issue, but credit goes to you. :)
Ver también
Categorías
Más información sobre Startup and Shutdown en Help Center y File Exchange.
Productos
Community Treasure Hunt
Find the treasures in MATLAB Central and discover how the community can help you!
Start Hunting!