Matlab 如何在欧氏距离计算中操作矩阵加法和乘法?

Matlab 如何在欧氏距离计算中操作矩阵加法和乘法?,matlab,matrix,vector,euclidean-distance,norm,Matlab,Matrix,Vector,Euclidean Distance,Norm,我有以下资料: A = [1 2 3; 4 5 6; 7 8 9]; B = [10 11 12; 13 14 15]; [N1, D1] = size(A); [N2, D2] = size(B); A_sq = sum(A.^2, 2); B_sq = sum(B.^2, 2)'; D = A_sq(:,ones(1,N2)) + B_sq(ones(1,N1),:) - 2.*(A*B'); 其中D是N1 x D1矩阵 我想在一个步骤中编写D的表达式,例如,类似这样的东西(这是为了

我有以下资料:

A = [1 2 3; 4  5 6; 7 8 9];
B = [10 11 12; 13 14 15];

[N1, D1] = size(A);
[N2, D2] = size(B);

A_sq = sum(A.^2, 2);
B_sq = sum(B.^2, 2)';
D = A_sq(:,ones(1,N2)) + B_sq(ones(1,N1),:) - 2.*(A*B');
其中DN1 x D1矩阵

我想在一个步骤中编写D的表达式,例如,类似这样的东西(这是为了说明目的,但它应该计算与上面代码相同的欧几里德距离):


如有任何建议,我将不胜感激。

如果您有可以使用的统计工具箱,它可以:

D = pdist2(A,B).^2
或者,您可以使用和手动执行此操作:

例如,矩阵

A = [1 2 3; 4  5 6; 7 8 9];
B = [10 11 12; 13 14 15];
以上任何一项都给出了答案

D =
   243   432
   108   243
    27   108

如果您有可以使用的统计工具箱,它可以:

D = pdist2(A,B).^2
或者,您可以使用和手动执行此操作:

例如,矩阵

A = [1 2 3; 4  5 6; 7 8 9];
B = [10 11 12; 13 14 15];
以上任何一项都给出了答案

D =
   243   432
   108   243
    27   108

这段代码有点难理解-你想计算什么样的欧几里德距离?在k-均值聚类中计算数据点和质心之间的距离。A的行数比B多,但两者的维数相同。那么A中的每个向量和B中的每个向量之间的距离是多少?是的。表达式D=A_sq(:,one(1,N2))+B_sq(one(1,N1),:)-2.*(A*B');计算它。但我想用sum(…)的形式写它。^2,即sum只出现一次或根本不出现。我也不想使用for循环。我删除了我的答案:
D=repmat(总和(A'.^2'),1,大小(B,1))+repmat(总和(B'.^2),大小(A,1),1)-2.*(A*B')。请修改你的问题,很难理解你在找什么。你是什么意思:“计算与上面代码相同的欧几里德距离”?这个代码有点难理解-你想计算什么欧几里德距离?在k均值聚类中计算数据点和质心之间的距离。A的行数比B多,但两者的维数相同。那么A中的每个向量和B中的每个向量之间的距离是多少?是的。表达式D=A_sq(:,one(1,N2))+B_sq(one(1,N1),:)-2.*(A*B');计算它。但我想用sum(…)的形式写它。^2,即sum只出现一次或根本不出现。我也不想使用for循环。我删除了我的答案:
D=repmat(总和(A'.^2'),1,大小(B,1))+repmat(总和(B'.^2),大小(A,1),1)-2.*(A*B')。请修改你的问题,很难理解你在找什么。“计算与上述代码相同的欧几里德距离”是什么意思?