Azzera filtri
Azzera filtri

Compute L1 distance between matrices in fast way

2 visualizzazioni (ultimi 30 giorni)
Hi,
I have to compute the L1 distance (Manhattan distance) between matrices. Is there a fast way that avoid to use for loop? I have found this code for euclidean distance
if true
aa=sum(a.*a,2); bb=sum(b.*b,2); ab=a*b';
d = sqrt(abs(repmat(aa,[1 size(bb,1)]) + repmat(bb',[size(aa,1) 1]) - 2*ab));
end
Thank you
  3 Commenti
Walter Roberson
Walter Roberson il 20 Dic 2012
Jan, put your cursor on the text entry box without anything selected, and press the {} Code button...
Jan
Jan il 21 Dic 2012
@Walter: Thank you very much. This is revelation.

Accedi per commentare.

Risposta accettata

Matt J
Matt J il 20 Dic 2012
norm(a-b,1);
  2 Commenti
nedo nodo
nedo nodo il 30 Gen 2013
|monospacedYour solution works only if a,b have the same dimension. If a is a matrix and b is a vector how can I do?
My idea is: N=sum((abs(bsxfun(@minus,A,B)).^p),2).^(1/p);
Thank you
Matt J
Matt J il 30 Gen 2013
Looks fine, assuming B is a row vector.

Accedi per commentare.

Più risposte (0)

Categorie

Scopri di più su Line Plots 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!

Translated by