用matlab计算俩个矩阵之间的欧氏距离
假设有两个矩阵A和B,其中A有m行n列,B有p行q列。则它们之间的欧氏距离可以通过以下matlab代码计算:
% 输入矩阵A和B
A = [1 2 3; 4 5 6; 7 8 9];
B = [9 8 7; 6 5 4];
% 计算A和B的行向量范数平方
norm_A = sum(A.^2, 2);
norm_B = sum(B.^2, 2);
% 计算A和B的内积
inner_prod = A * B';
% 计算欧氏距离
dist = sqrt(bsxfun(@plus, norm_A, bsxfun(@minus, norm_B', 2 * inner_prod)));
代码解释:
- 第1行和第2行分别定义了矩阵A和B;
- 第5行和第6行分别计算了矩阵A和B的行向量范数平方,即A和B每一行元素的平方和;
- 第8行计算了矩阵A和B的内积,即A的每一行和B的每一行的点积;
- 第10行使用了bsxfun函数进行矩阵运算,具体地,先将norm_A和norm_B'扩展为m×q的矩阵和q×m的矩阵,然后对它们进行加法和减法,得到一个m×q的矩阵,再加上2×inner_prod,得到一个m×q的矩阵,最后对每个元素开方,得到欧氏距离矩阵dist
原文地址: https://www.cveoy.top/t/topic/dOoR 著作权归作者所有。请勿转载和采集!