【发布时间】:2011-10-08 12:18:06
【问题描述】:
我需要在 matlab 中计算 2 个矩阵之间的欧几里得距离。目前我正在使用 bsxfun 并计算距离如下(我附上了代码的 sn-p):
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 可以帮助减少计算时间,但由于我使用的是 matlab 7 版,所以我没有 pdist2 函数。升级不是一种选择。
任何帮助。
问候,
佛系
【问题讨论】:
标签: matlab vectorization euclidean-distance bsxfun