【问题标题】:Euclidean Distance of two vectors with different length不同长度的两个向量的欧几里得距离
【发布时间】:2016-03-29 05:46:42
【问题描述】:

我有一个像这样计算欧几里得距离的代码:

for(int j=0;j<inputdimension;j++){
        distance += Math.pow((vector1[j] - vector2.get(j)), 2);
    }

我有一个不同数组大小的数据示例,我想用这两个数组的欧几里得距离函数计算。例如:

vector1[] = {0.5,0.1,0.3,1.5}
vector2[] = {1.4,3.2,3.4,0.1,7.8,0.2,8.3,8.4}

到目前为止,我遇到了计算具有相同数组大小的欧几里得距离的示例。所以我想出了一个解决方案来删除剩余的数组,以便它们像这样保持平衡:

vector1[] = {0.5,0.1,0.3,1.5}
vector2[] = {1.4,3.2,3.4,0.1}

问题是,我不知道它是否正确?有没有其他方法可以平衡这些数据?

【问题讨论】:

  • 我很难解释 8 维向量的含义。也就是说,我认为您应该假设所有向量都与最大长度相同,并且它们的额外元素都为零。
  • 我正在使用的这个数组示例是我使用 mfcc 处理过的声音信号示例,我想用 LVQ 方法对其进行训练

标签: java arrays vector euclidean-distance


【解决方案1】:

答案很简单。您无法找到具有不同维数的两点之间的欧几里得距离。如果像这样消除剩余的数组,答案将是不切实际且不一致的。但是,如果您必须这样做,您可以将零添加到较小的数组中。结果会更好,但在我看来还是不现实。

附:你需要在for循环之后使用Math.sqrt(distance)方法。

【讨论】:

    猜你喜欢
    • 2020-02-20
    • 2014-05-31
    • 2020-06-26
    • 2014-11-12
    • 2014-03-27
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2021-03-07
    相关资源
    最近更新 更多