function [D] = distChiSq( W, X )
%%% find the Chi2Dist distance between each weight vector and X
% W is nxd
m = size(W,1); n = size(X,1);
k = size(W,2);
mOnes = ones(1,m); D = zeros(m,n);
for i=1:n
Xi = X(i,:); XiRep = Xi( mOnes, : );
s = XiRep + W; /************/
d = XiRep - W; /************/
D(:,i) = sum( d.^2 ./ (s+eps), 2 ); /************/
end
D = D/2;
これは、重み行列とデータの間の Chi2 距離計算の一部です。マークされた行は、すべてのコードの中で最も消費量の多い行です。MATLAB でより高速に実行する方法はありますか?
データがnxmの場合s = nxm, d = nxm
、Dは距離を保っています。n はインスタンス数、m は変数数です。