How to compare two array in nested loop ?
12 visualizzazioni (ultimi 30 giorni)
Mostra commenti meno recenti
Joni Saputra
il 21 Nov 2018
Commentato: Joni Saputra
il 22 Nov 2018
I have code like this :
Ind = [];
distTh = 5;
A = [1;7;14];
B = [2;5;8;10];
for i = 1:size(A,1)
for j = 1: size(B,1)
Distance = abs(B(j) - A(i));
if Distance < distTh
Ind = [Ind j];
end
end
end
My questions : How to make elements in array 'B' no longer compared to array 'A' (remove index 'B'), if it is already in 'Ind' ?
Thank you very much.
0 Commenti
Risposta accettata
Geoff Hayes
il 21 Nov 2018
Joni - well you can use find or ismember to check to see whether you should add j to the list of indices Ind as
if Distance < distTh && ~ismember(j, Ind)
Ind = [Ind j];
end
or use a similar check to skip the compare altogether
for i = 1:size(A,1)
for j = 1: size(B,1)
if ~isempty(find(Ind == j))
continue;
end
Distance = abs(B(j) - A(i));
if Distance < distTh
Ind = [Ind j];
end
end
end
There are probably other ways to solve this too. Can you give us an idea as to how large your A and B matrice might be? (As this will impact performance and help you decide which method to use (find vs ismember, etc.).
Più risposte (0)
Vedere anche
Categorie
Scopri di più su Logical 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!