不同长度的两个向量的欧氏距离
Euclidean Distance of two vectors with different length
我有这样一个计算欧氏距离的代码:
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}
问题是,不知道对不对?还有其他方法可以平衡这些数据吗?
答案很简单。您无法找到维数不同的两点之间的欧氏距离。如果你像这样消除剩余的数组,答案将是不现实和不一致的。但是,您可以将零添加到较小的数组中,如果这对您来说是必须的。结果会更好,但在我看来还是不现实。
P.S。你需要在 for 循环之后使用 Math.sqrt(distance)
方法。
我有这样一个计算欧氏距离的代码:
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}
问题是,不知道对不对?还有其他方法可以平衡这些数据吗?
答案很简单。您无法找到维数不同的两点之间的欧氏距离。如果你像这样消除剩余的数组,答案将是不现实和不一致的。但是,您可以将零添加到较小的数组中,如果这对您来说是必须的。结果会更好,但在我看来还是不现实。
P.S。你需要在 for 循环之后使用 Math.sqrt(distance)
方法。