Logical expression not working with loop and if statement

2 visualizzazioni (ultimi 30 giorni)
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 Commenti
Maxence Boels
Maxence Boels il 11 Nov 2019
Thank you ! Much simpler than I thought.
Do you know what was going wrong in my query?
Walter Roberson
Walter Roberson il 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.

Accedi per commentare.

Risposta accettata

Ankit
Ankit il 11 Nov 2019
Modificato: Ankit il 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

Più risposte (0)

Categorie

Scopri di più su Loops and Conditional Statements in Help Center e File Exchange

Community Treasure Hunt

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

Start Hunting!

Translated by