【发布时间】:2015-01-30 02:29:07
【问题描述】:
我有一个矩阵X,维度为 r = 2 行,col = 20000 列,我想计算平方距离之和的平方根 = 点对之间的欧几里得距离。例如:
让,
X = 1 2 3 4
5 6 7 8
Dist1 = sqrt((1-2)^2 + (5-6)^2))
Dist2 = sqrt((1-3)^2 + (5-7)^2))
and so on. So, distance(1,2) = Dist1;
distance(1,3) = Dist2
结果将是一个大小为N*N 的矩阵。
但是,当数据点很大时,比如 100 万,这需要很多时间。我怎样才能有效地修改此代码,使其既体面又快速。请帮忙。
r =2;
col = 2000;
X = rand(r,col);
N = col;
for k =1: N
for l = 1: N
if (l ~= k)
distance(k,l) =( sqrt(sum((X(:,k) - X(:,l)) .^ 2)));
end
end
end
end
【问题讨论】: