Effacer les filtres
Effacer les filtres

vectorisation of a loop

6 vues (au cours des 30 derniers jours)
Zaid B
Zaid B le 30 Nov 2021
Modifié(e) : Matt J le 6 Déc 2021
the matrix is "Sea" of m*n dimension .. this is the code i would like to vectorize :
=======================
S = size(Sea);
i = 1;
while i < S(1)
indices = find ( pdist2( Sea( i , : ),Sea( i+1:S(1) , :)) <0.05 );
Sea(indices , : ) = [];
S = size(Sea);
i = i+1;
end
===========
desc : i'm trying to calculate the distance between each row and all the other rows in the matrix and delete the ones that are closer than 0.05

Réponses (2)

Matt J
Matt J le 30 Nov 2021
Modifié(e) : Matt J le 1 Déc 2021
[m,n]=size(Sea);
D=pdist2(Sea,Sea);
D(1:m+1:end)=inf;
indices=any(triu(D<0.05),1);
Sea(indices,:)=[];
  12 commentaires
Zaid B
Zaid B le 2 Déc 2021
Modifié(e) : Zaid B le 2 Déc 2021
thank you for answering , but why ( i - 1 ) is added on that line?!
("Moreover, I don't think there is any more optimization that can be done" ... i thought so , but wanted to check if anyone has a better idea that would help)
Zaid B
Zaid B le 2 Déc 2021
Modifié(e) : Zaid B le 2 Déc 2021
i got it why is nedded there but i think "i + find(...)" not "(i-1)+find(..)" because it should keep the current i , thank you that was a great help there ^^

Connectez-vous pour commenter.


Matt J
Matt J le 2 Déc 2021
Modifié(e) : Matt J le 2 Déc 2021
I find this version to be about 30% faster:
S = size(Sea,1);
i = 1;
t=0.05^2;
while i < S
indices=true(1,S);
indices(i+1:end) = sum( abs( Sea( i , : )-Sea( i+1:S , :) ).^2,2) >= t ;
Sea=Sea(indices , : );
S = size(Sea,1);
i = i+1;
end
  13 commentaires
Matt J
Matt J le 6 Déc 2021
Modifié(e) : Matt J le 6 Déc 2021
If you have the Parallel Computing Toolbox, then making Sea a gpuArray should add some speed.
Zaid B
Zaid B le 6 Déc 2021
yeah i do , i ll try it and post the results later

Connectez-vous pour commenter.

Catégories

En savoir plus sur Programming dans Help Center et File Exchange

Community Treasure Hunt

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

Start Hunting!

Translated by