Excel中的欧氏距离矩阵

问题描述 投票:0回答:4

我迫切需要一些 Excel 相关的帮助。

假设我有 4 个不同的部分。每个段有 7 个数字属性。

A(200;43;23;1.5;16;50000;14)  
B(250;41;23;2.1;19;70000;13)  
C(179;37;25;3.4;20;15000;12)  
D(402;49;19;1.9;25;99000;11)

假设每个段都有自己的行(1-4),每个属性都有自己的列(A-G)。 我使用以下方程计算每个单独行之间的欧几里德距离:

=SQRT(SUMPRODUCT((A1:G1-B2:G2)^2))

我如何编辑这个方程,以便如果我创建一个像这样的矩阵:

\ A B C D  
A  
B  
C  
D  

给定线段交叉的单元格中的对角线和线段之间的距离应该为 0?每次我使用“$”来修复行或列时,我都会得到不正确的结果,并且我已经没有想法了。
我希望我表达了我的问题以便每个人都能理解。

excel-formula euclidean-distance
4个回答
5
投票

不确定您发布的方程式到底是如何运作的; SUMPRODUCT 需要用逗号分隔的值范围。对于一维中两点之间的欧氏距离,公式应如下所示(如果我误解了您的数据,请告诉我):

=SQRT((SUM(A1:G1)-SUM(A2:G2))^2)

对于矩阵,我使用了 INDIRECT 来使其工作。然而,为了使公式更简单,我必须将矩阵的行和列命名为 1 到 4。这是最终结果的图像:

enter image description here

您在矩阵 (L2) 第一个单元格的屏幕截图中看到的公式是:

=SQRT((SUM(INDIRECT("A"&$K2&":G"&$K2))-SUM(INDIRECT("A"&L$1&":G"&L$1)))^2)

将该公式放入 L2 后,我只需将其拖拽复制到 L5,然后将整个矩阵列拖拽复制到 O。

基本上,这个公式的作用是使用矩阵的行和列名称来创建对每个段数组的间接调用。 (所以基本上为了让它工作,矩阵的列和行的标题需要与段数据所在的行匹配。)


2
投票

对于任何尝试这样做的人 - 我很确定上面的方法不会计算欧几里德距离,因为这需要每个元素之间的平方差之和,而不仅仅是总差的平方和

这样的东西是有效的(我认为):

=SQRT((SUM(间接("B"&$G3))-SUM(间接("B"&H$1)))^2+(SUM(间接("C"&$G3))-SUM(间接("C"&H$1)))^2+(SUM(间接("D"&$G3))-SUM(间接("D"&H$1)))^2)


0
投票

Excel 中的欧几里得距离矩阵

=SQRT((VLOOKUP($E3,Table1,2,FALSE)-VLOOKUP(F$2,Table1,2,FALSE))^2+(VLOOKUP($E3,Table1,3,FALSE)-VLOOKUP(F$2,Table1,3,FALSE))^2)

使用它从坐标表中查找点名称并计算距离矩阵。


0
投票

我找到了一个更干净的解决方案(我认为)。在左上角单元格中输入后,也可以将公式复制到整个矩阵。请参阅附件中的参考文件和下面的公式,了解可以在整个矩阵上拖动复制的左上角单元格 enter image description here ''' +IF(B$1=$A2,0,SQRT(SUMXMY2(OFFSET($A$1,1,B$1,$A$6,1),OFFSET($A$1,1,$A2,$A$6) ,1)))) '''

© www.soinside.com 2019 - 2024. All rights reserved.