/ / Minkowski距離コード - java、matlab

Minkowski距離コード - 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);
}

コードは、ミンコフスキーの距離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は4

あなたの問題は、それです

1/q=0

Javaで(少なくとも q>1)しかし、

1/p!=0

matlabで。

したがって浮動小数点の除算と使用による整数除算を置き換える必要があります

1.0/q