Find a row in a matrix in faster way
Afficher commentaires plus anciens
Hi,
I have to compare two matrices: in detail, I have to find if each row of a matrix1 is contained in a matrix2. Then I have to store the corresponding positions in a vector.
The following is a trivial method and seems to be faster than ismember version.
if true
t1=tic;
for m=1:size(matrix1,1)
for l=1:size(matrix2,1)
if(sum(xor(matrix1(m,:), matrix2(l,:)))==0)
vector(m)=l;
end
end
end
toc(t1)
end
ismember version.
if true
t2=tic;
for m=1:size(matrix1,1)
index=ismember(matrix2,matrix1(m,:),'rows');
l=find(index);
vector(m)=l;
end
toc(t2)
end
Is there a way to speed up such computation? Thank
2 commentaires
Image Analyst
le 29 Nov 2012
Are they integer or floating point? http://matlab.wikia.com/wiki/FAQ#Why_is_0.3_-_0.2_-_0.1_.28or_similar.29_not_equal_to_zero.3F
Matt Fig
le 29 Nov 2012
IA, the methods do not return the same results unless both matrices are binary....
Réponse acceptée
Plus de réponses (0)
Catégories
En savoir plus sur Resizing and Reshaping Matrices dans Centre d'aide et File Exchange
Community Treasure Hunt
Find the treasures in MATLAB Central and discover how the community can help you!
Start Hunting!