Logical expression not working with loop and if statement

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 件のコメント

Walter Roberson
Walter Roberson 2019 年 11 月 11 日
imgout = n_candidate_class == query_class;
is all that is needed if you want to process all of n_candidate_class
Maxence Boels
Maxence Boels 2019 年 11 月 11 日
Thank you ! Much simpler than I thought.
Do you know what was going wrong in my query?
Walter Roberson
Walter Roberson 2019 年 11 月 11 日
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.

サインインしてコメントする。

 採用された回答

Ankit
Ankit 2019 年 11 月 11 日
編集済み: Ankit 2019 年 11 月 11 日

0 投票

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

1 件のコメント

Maxence Boels
Maxence Boels 2019 年 11 月 11 日
Great Job ! Thanks for your answer.

サインインしてコメントする。

その他の回答 (0 件)

カテゴリ

ヘルプ センター および File ExchangeLoops and Conditional Statements についてさらに検索

質問済み:

2019 年 11 月 11 日

コメント済み:

2019 年 11 月 11 日

Community Treasure Hunt

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

Start Hunting!

Translated by