Optimal distance calculation for a data cube

1 回表示 (過去 30 日間)
Bradley Flynn
Bradley Flynn 2016 年 4 月 2 日
編集済み: John BG 2016 年 4 月 2 日
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 件のコメント
John BG
John BG 2016 年 4 月 2 日
編集済み: John BG 2016 年 4 月 2 日
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.

サインインしてコメントする。

回答 (1 件)

Walter Roberson
Walter Roberson 2016 年 4 月 2 日
Possibly reshape to rows, and then pdist() ?

カテゴリ

Help Center および File ExchangeMatrix Indexing についてさらに検索

Community Treasure Hunt

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

Start Hunting!

Translated by