matlabの2つの行列間のユークリッド距離を計算する必要があります。現在、bsxfunを使用して、以下のように距離を計算しています(コードのスニペットを添付しています):
for i=1:4754
test_data=fea_test(i,:);
d=sqrt(sum(bsxfun(@minus, test_data, fea_train).^2, 2));
end
fea_testのサイズは4754x1024、fea_trainは6800x1024です。彼のforループを使用すると、forの実行に約12分かかりますが、これは高すぎると思います。両方の行列間のユークリッド距離をより速く計算する方法はありますか?
不要なforループを削除することで、実行時間を短縮できると言われました。また、pdist2が計算時間を短縮するのに役立つことも知っていますが、バージョン7のmatlabを使用しているため、pdist2関数がありません。アップグレードはオプションではありません。
どんな助けでも。
よろしく、
バヴィア