excel中的欧几里德距离矩阵

时间:2014-09-24 10:50:51

标签: excel-formula euclidean-distance

我迫切需要一些与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,并且给定线段交叉的单元格中的线段之间的距离是多少?每次我使用' $'修复一行或一列我得到的结果不正确,我的想法已经用完了 我希望我表达了我的问题,以便每个人都能理解。

2 个答案:

答案 0 :(得分:2)

不确定你发布的等式究竟是如何工作的; 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.

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

答案 1 :(得分:2)

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

这样的事情(我认为):

= SQRT((SUM(INDIRECT(" B"&安培; $ G3)) - SUM(INDIRECT(" B"&安培; H $ 1)))^ 2 +(SUM (INDIRECT(" C"&安培; $ G3)) - SUM(INDIRECT(" C"&安培; H $ 1)))^ 2 +(SUM(INDIRECT(" d& #34;&安培; $ G3)) - SUM(INDIRECT(" d"&安培; H $ 1)))^ 2)