闵可夫斯基距离代码

时间:2016-07-16 19:09:03

标签: java matlab

我有以下用于计算Minkowski距离的java代码,

 class Minkowski {
 public static void main( String  [] arg){
    int p=2;
    double [] Mski = new double[5];

    double  [] a = { 1, 2, 3, 4,5};
    double  [] b = { 6,7,8,9,11};
   System.out.println(Arrays.toString(Minkowski1(a,b,p);
 }
public static double Minkowski1( double [] a , double [] b, int q)  
{ 
    double sum = 0;
    for(int f = 0; f < a.length; f++){
        sum += Math.pow( Math.abs(a[f] - b[f]),q );
    }
    return Math.pow(sum, 1.0 / q);
 }

该代码产生了与Minkowski距离matlab代码不同的结果:

for i=1 : 5
    result2(i)=sum(abs(X(i)-Y(i)).^p).^(1/p)
end
the result in matlab is 5 5 5 5 6,and java one is not same 

请提出任何建议

1 个答案:

答案 0 :(得分:4)

你的问题是,

1/q=0
java中的

(至少对于q>1)但

1/p!=0

在matlab中。

所以你需要通过浮点除法替换整数除法并使用

1.0/q