假设有两个矩阵 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_Anorm_B' 扩展为 m×q 的矩阵和 q×m 的矩阵,然后对它们进行加法和减法,得到一个 m×q 的矩阵,再加上 2×inner_prod,得到一个 m×q 的矩阵,最后对每个元素开方,得到欧氏距离矩阵 dist
MATLAB矩阵欧氏距离计算方法及代码详解

原文地址: https://www.cveoy.top/t/topic/nKZ3 著作权归作者所有。请勿转载和采集!

免费AI点我,无需注册和登录