Java中的Trimmean?

时间:2012-04-11 09:27:47

标签: java matlab maven

我需要Java中的Matlab's trimmean()函数,我不想重新发明轮子。

有人知道有一个现成的实现吗? (是的,我知道我可以立刻成功,但如果有人已经为社区做出贡献,我就不会浪费时间。

我用Google搜索了一些替代方案,但我只找到了部分和占位符实现(例如thisthis)。

任何建议都非常值得赞赏,最好的是我可以玩的Maven依赖。

提前致谢!

1 个答案:

答案 0 :(得分:0)

仅针对档案,我找到了一个可接受的解决方案with Colt

public static void trimmean(final double[] arr, final int percent) {
    if ( percent < 0 || 100 < percent ) {
        throw new IllegalArgumentException("Unexpected value: " + percent);
    }

    if ( 0 == arr.length ) {
        return Double.NaN;
    }

    final int n = arr.length;
    final int k = Math.round(n * ( percent / 100.0 ) / 2.0); // Check overflow
    final DoubleArrayList list = new DoubleArrayList( arr );
    list.sort();

    return Descriptive.winsorizedMean( list, Descriptive.mean( list ), k, k );
}