两个矩阵间元素(向量)距离的度量,首先想到的是遍历,循环的方式,显然 matlab 下的编程并不推荐,matlab 下矩阵向量化编程效率尤高。
先考虑两个向量距离的计算:
∥x−y∥2=∥x∥2+∥y∥2−2⋅xTy
% x, y
sqrt(x'*x + y'*y - 2*x'*y)
进一步两个矩阵内部向量之间的距离:
% A_{N*d}, B_{M*d}
D = sum(A.*A, 2)*ones(1, M) + ones(N, 1) * sum(B.*B, 2)' - 2*A*B';