【发布时间】:2014-04-29 12:05:01
【问题描述】:
我需要帮助来优化这个循环。 matrix_1 是 (nx 2) 整数矩阵,matrix_2 是 (m x 2)、m & n 非常。
index_j = 1;
for index_k = 1:size(Matrix_1,1)
for index_l = 1:size(Matrix_2,1)
M2_Index_Dist(index_j,:) = [index_l, sqrt(bsxfun(@plus,sum(Matrix_1(index_k,:).^2,2),sum(Matrix_2(index_l,:).^2,2)')-2*(Matrix_1(index_k,:)*Matrix_2(index_l,:)'))];
index_j = index_j + 1;
end
end
我需要 M2_Index_Dist 提供一个 ((n*m) x 2) 矩阵,第一列中的索引为 matrix_2,第二列中的距离。
输出示例:
M2_Index_Dist = [ 1, 5.465
2, 56.52
3, 6.21
1, 35.3
2, 56.52
3, 0
1, 43.5
2, 9.3
3, 236.1
1, 8.2
2, 56.52
3, 5.582]
【问题讨论】:
-
为什么要将
bsxfun应用于两个标量值?你能举一个你想要达到的结果的小例子吗? -
@FireSky:一个数值例子应该包括输入和输出
标签: performance matlab optimization for-loop bsxfun