2016-08-16 12 views
1

Iは、以下を有する:DN1第X D1行列でユークリッド距離計算のために行列の加算と乗算を操作する方法は?

A = [1 2 3; 4 5 6; 7 8 9]; 
B = [10 11 12; 13 14 15]; 

[N1, D1] = size(A); 
[N2, D2] = size(B); 

A_sq = sum(A.^2, 2); 
B_sq = sum(B.^2, 2)'; 
D = A_sq(:,ones(1,N2)) + B_sq(ones(1,N1),:) - 2.*(A*B'); 

は、私は1つのステップでDの式を書きたい、すなわち、このような何か(これは説明のためのものであり、それは上記のコードと同じユークリッド距離を計算する必要があり):

D = sum(A - B).^2; 

Iを任意の助言を感謝します。

+3

このコードは、いくらか難しいです。ユークリッド距離はあなたが計算しようとしているものですか? –

+0

データポイントと重心の間の距離を計算するのはk-meansクラスタリングです。 AはBより多くの行を持ちますが、両方とも同じ次元を持ちます。 –

+0

OKだからAの各ベクトルとBの各ベクトルの距離は? –

答えて

0

あなたはStatistics Toolboxのを持っている場合は、あなただけではありませんpdist2、使用することができます。

D = pdist2(A,B).^2 

それとも、bsxfunpermuteで手動で行うことができます:あなたたとえば

D = permute((sum(bsxfun(@minus, A, permute(B, [3 2 1])).^2,2)), [1 3 2]); 

行列を
A = [1 2 3; 4 5 6; 7 8 9]; 
B = [10 11 12; 13 14 15]; 

上記gのいずれかives

D = 
    243 432 
    108 243 
    27 108 
関連する問題