Optimal distance calculation for a data cube

1 visualización (últimos 30 días)
Bradley Flynn
Bradley Flynn el 2 de Abr. de 2016
Editada: John BG el 2 de Abr. de 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 comentario
John BG
John BG el 2 de Abr. de 2016
Editada: John BG el 2 de Abr. de 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.

Iniciar sesión para comentar.

Respuestas (1)

Walter Roberson
Walter Roberson el 2 de Abr. de 2016
Possibly reshape to rows, and then pdist() ?

Categorías

Más información sobre Matrix Indexing en Help Center y File Exchange.

Community Treasure Hunt

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

Start Hunting!

Translated by