您好我目前正在比较 Matlab 和 Apache 函数之间的统计数据。这里 Apache 函数在 Java 中进行了测试。对于相同的数据集,我从双精度数组(double[])中得到不同的结果,如下所示:
---------------------------------------
Matlab vs Apache
---------------------------------------
max = 0.5451 vs 0.5450980392156862
min = 0.4941 vs 0.49411764705882355
var = 5.4154e-05 vs 5.415357603461868E-5
std = 0.0074 vs 0.007358911334879547
mean = 0.5206 vs 0.5205525290240967
kurtosis = 3.3442 vs 0.35227427833465486
skewness = 0.2643 vs 0.26466432504210746
我检查并重新检查了我的数据,Matlabs 中的每个值都与 Java 中使用的相同。在这里,我们可以看到所有统计数据都是相同的,除了峰度。
峰度的计算是否可能与 Matlab 和 Apache 库不同?如果是这样,那么我应该信任哪些数据?
编辑
我的数据是图像矩阵的子集(包含像素值)。对于每个子集,我计算上述统计数据。每次,除了峰度之外,所有统计数据都完美匹配。
用于计算我的子集峰度的 matlab 代码如下:
kurtosis( sub(:) ); // sub is a n x m matrix
虽然我在 Java 中使用的是:
import org.apache.commons.math3.stat.descriptive.moment.Kurtosis;
// ...
Kurtosis kurt = new Kurtosis();
System.out.println("-kurtosis: " + kurt.evaluate(subImg) );
subImg 是一个 double[nxm] 数组。