【问题标题】:Euclidean distance matrix in excelexcel中的欧几里得距离矩阵
【发布时间】:2014-11-18 20:03:50
【问题描述】:

我急需一些与 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


    【解决方案1】:

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

    这样的事情(我认为):

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

    【讨论】:

    • 也可以使用SUMXMY2:“返回两个数组中对应值的差平方和。”
    【解决方案2】:

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

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

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

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

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

    将该公式放入 L2 后,我只是向下拖动复制到 L5,然后将整个矩阵列拖动复制到 O。

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

    【讨论】:

    • INDIRECT 正是我正在寻找的。谢谢。
    • 这里的欧式dist定义不是常用的。也许谨慎行事......
    猜你喜欢
    • 1970-01-01
    • 2017-01-05
    • 1970-01-01
    • 2018-05-11
    • 2020-06-16
    • 2016-08-02
    • 2013-10-21
    • 2014-06-08
    • 2013-03-02
    相关资源
    最近更新 更多