Logical expression not working with loop and if statement

2 vues (au cours des 30 derniers jours)
Maxence Boels
Maxence Boels le 11 Nov 2019
Commenté : Walter Roberson le 11 Nov 2019
I need an array with [1, 1, 0, 1, 0, 0, 1, 1, 0, 1]
N=10;
query_class=9;
n_candidate_class = [9, 9, 4, 9, 5, 5, 9, 9, 5, 9];
imgout = zeros(1,N);
for n = 1:N
for c = 1:N
if query_class == n_candidate_class(n)
imgout(c) = 1;
else
imgout(c) = 0;
end
end
end
  3 commentaires
Maxence Boels
Maxence Boels le 11 Nov 2019
Thank you ! Much simpler than I thought.
Do you know what was going wrong in my query?
Walter Roberson
Walter Roberson le 11 Nov 2019
You overwrite each imgout(c ) for each different n value, so you are only getting the result as-if you had run with n=N . You want to be comparing corresponding values, not each one to each other.

Connectez-vous pour commenter.

Réponse acceptée

Ankit
Ankit le 11 Nov 2019
Modifié(e) : Ankit le 11 Nov 2019
Hello Maxence Boels,
this is due to the inner for loop, which is causing problem. for n =1, the inner loop changes its values from 1 to 10, and compares query_class(whose value is 9) to n_candidate_class(1) which is also 9. Hence it return [1,1, 1,1,1,1,1,1,1,1] for the first iteration of n.
N=10;
query_class=9;
n_candidate_class = [9, 9, 4, 9, 5, 5, 9, 9, 5, 9];
imgout = zeros(1,N);
for n = 1:N
if query_class == n_candidate_class(n)
imgout(n) = 1;
else
imgout(n) = 0;
end
end

Plus de réponses (0)

Catégories

En savoir plus sur Loops and Conditional Statements dans Help Center et File Exchange

Community Treasure Hunt

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

Start Hunting!

Translated by