Logical expression not working with loop and if statement

2 ビュー (過去 30 日間)
Maxence Boels
Maxence Boels 2019 年 11 月 11 日
コメント済み: Walter Roberson 2019 年 11 月 11 日
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 件のコメント
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 日
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 件)

カテゴリ

Help Center および File ExchangeLoops and Conditional Statements についてさらに検索

Community Treasure Hunt

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

Start Hunting!

Translated by