Optimal distance calculation for a data cube

1 vue (au cours des 30 derniers jours)
Bradley Flynn
Bradley Flynn le 2 Avr 2016
Modifié(e) : John BG le 2 Avr 2016
I'm wondering if there's a better way to calculate my distance matrix?
function D = frame2frameDist(imageStack)
[h, w, c, l] = size(imageStack);
D = zeros(l);
for channel = 1:c
for i = 1:l
for j = i:l
D(i,j) = D(i,j) + norm(imageStack(:,:,channel,i)-imageStack(:,:,channel,j));
end;
end;
end;
D = triu(D)+triu(D,1)';
Is there a way to do this without iteration?
  1 commentaire
John BG
John BG le 2 Avr 2016
Modifié(e) : John BG le 2 Avr 2016
have you tried
for i = 1:l
for j = i:l
D(i,j) = D(i,j) + norm(imageStack(:,:,:,i)-imageStack(:,:,:,j));
end;
end;
can you submit a sample of frames and channels?
also, functions bsxfun and arrayfun may have a way to combine the norm() and rid loops i and j.
There is an expert in this forum called Andrei Bobrov who showed me how to use bsxfun, may be you could ask him.

Connectez-vous pour commenter.

Réponses (1)

Walter Roberson
Walter Roberson le 2 Avr 2016
Possibly reshape to rows, and then pdist() ?

Catégories

En savoir plus sur Matrix Indexing 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