I am trying to determine if all of the numbers in "x" is non-zero values:
x = [1 1 0]
% 1:
if x ~= [0 0 0]
disp('x is not zeros')
end
% 2:
if all(x ~= 0)
disp('x is not zeros')
end
but the output is saying the x is zeros.
what mistake did I make?

4 Kommentare

Adam
Adam am 3 Jul. 2019
Your second version seems fine. It should return false with that example as it is not all non-zero.
Pref_Color_offset = 0.1;
if all(Pref_Color ~= 0)
disp('yes')
for i = 1:1:3
if Pref_Color(i) >= Pref_Color_offset
Pref_Color_Darkened(i) = Pref_Color(i) - Pref_Color_offset;
else
Pref_Color_Darkened(i) = Pref_Color(i);
end
if Pref_Color_Darkened(i) >= (5*Pref_Color_offset)
Pref_Color_Darkened_More(i) = Pref_Color_Darkened(i) - (5*Pref_Color_offset);
else
Pref_Color_Darkened_More(i) = Pref_Color_Darkened(i);
end
end
else
disp('no')
Pref_Color_Darkened = [0.15 0.15 0.15];
Pref_Color_Darkened_More = [1 1 1];
end
This is what I have, with a input of: Pref_Color = [1 1 0]
However, I am getting an "no" as the output.
see:
>> Pref_Color = [1 1 0];
>> Pref_Color_offset = 0.1;
if all(Pref_Color ~= 0)
disp('yes')
for i = 1:1:3
if Pref_Color(i) >= Pref_Color_offset
Pref_Color_Darkened(i) = Pref_Color(i) - Pref_Color_offset;
else
Pref_Color_Darkened(i) = Pref_Color(i);
end
if Pref_Color_Darkened(i) >= (5*Pref_Color_offset)
Pref_Color_Darkened_More(i) = Pref_Color_Darkened(i) - (5*Pref_Color_offset);
else
Pref_Color_Darkened_More(i) = Pref_Color_Darkened(i);
end
end
else
disp('no')
Pref_Color_Darkened = [0.15 0.15 0.15];
Pref_Color_Darkened_More = [1 1 1];
end
no
>>
Adam
Adam am 3 Jul. 2019
And why isn't this the expected answer? You are testing if all elements of Pref_Color are not equal to 0. Clearly this is false because the final element is 0 therefore it drops into your else block and reports 'no'.
Thanks for pointing out.
it should be
if ~all(Pref_Color == 0)
and now it is doing what I expected.

Melden Sie sich an, um zu kommentieren.

 Akzeptierte Antwort

Matt J
Matt J am 3 Jul. 2019

0 Stimmen

Your second if statement is correct, and I get the correct output (none).

Weitere Antworten (0)

Kategorien

Mehr zu Loops and Conditional Statements finden Sie in Hilfe-Center und File Exchange

Produkte

Version

R2016a

Gefragt:

am 3 Jul. 2019

Kommentiert:

am 3 Jul. 2019

Community Treasure Hunt

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

Start Hunting!

Translated by