Can you put a switch statement within an IF statement?
Afficher commentaires plus anciens
I want two values to be set if two conditions are true. A and B are absolute decimal numbers. array(k,j+1) is either the value 12345 or a complex number with decimals. I tried:
if (A<B) && (array(k,j+1) == 12345)
B = A
C= k
end
Because this didn't work (not desired output), I tried an if statement within a switch statement:
switch array(k,j+1)
case 12345
if A<B
B=A
C=k
end
otherwise
;
end
This also didn't work (not desired output), so I tried:
if A < B
B=A
switch array(k,j+1)
case 12345
C= k
otherwise
;
end
end
It seems that none of these things give the desired output, has anyone and idea/suggestions?
Réponses (2)
Image Analyst
le 14 Jan 2017
The first one should work if A & B are scalars. Because they didn't it's possible that array or the 12345 number may be floating point, double numbers, NOT integers. If they're not pure integers, like int32 or uint16 or whatever, or at least doubles with integer values, then you need to read and understand the FAQ: http://matlab.wikia.com/wiki/FAQ#Why_is_0.3_-_0.2_-_0.1_.28or_similar.29_not_equal_to_zero.3F
If A & B are arrays and you want to test that every single value of A is less than the corresponding B at that location, and array and 12345 might be some floating point numbers then you can do
if all(A<B) && abs(array(k, j+1) - 12345) < someSmallToleranceNumber
B = A
C = k
end
9 commentaires
belle
le 14 Jan 2017
Image Analyst
le 14 Jan 2017
Then this will probably work:
if A < B && abs(array(k, j+1) - 12345) > 0.0001
B = A
C = k
end
You'll enter the if block if A is less than B AND array is not 12345 (no matter whether it's complex or real). Both conditions must be true. If just one is true then it will not enter the if block.
belle
le 14 Jan 2017
Niels
le 14 Jan 2017
nope, you dont have to declare C
you would only have to, if you set another variable to C, like
Case= C; % and C never used or declared before
belle
le 14 Jan 2017
Niels
le 14 Jan 2017
can you maybe give us the values of A, B ans array(k, j+1)?
Image Analyst
le 14 Jan 2017
What problem? You forgot to attach the error message. You're simply setting C equal to k, and k definitely exists or else you would have had trouble referencing array(k, j+1). I can't imagine any problem with setting C equal to k, so show your actual code, not this pseudocode.
belle
le 14 Jan 2017
Catégories
En savoir plus sur Loops and Conditional Statements dans Centre d'aide et File Exchange
Community Treasure Hunt
Find the treasures in MATLAB Central and discover how the community can help you!
Start Hunting!