【问题标题】:java peak fitting libraryjava峰值拟合库
【发布时间】:2011-05-30 08:32:44
【问题描述】:

有人知道 Java 的峰值拟合库吗?

我想给它一个数据数组,它告诉我峰值的位置。

例如对于这个数据:

x, y
-5, 0.875333026
-4, 0.885868909
-3, 0.895851362
-2, 0.903971085
-1, 0.908274124
0, 0.907117054
1, 0.901894046
2, 0.894918547
3, 0.887651936
4, 0.880114302
5, 0.872150014

它会说峰值在(大约)-0.75

我可能只想拟合一个高斯,或者也许是一个分裂高斯......

.

我已将其标记为 curve-fitting,而不是 peak-fittingpeak-finding,因为我没有足够的声誉来制作新标签...

编辑:我更喜欢 Apache(或兼容的)许可代码...

【问题讨论】:

    标签: java curve-fitting


    【解决方案1】:

    您想通过最小二乘拟合确定峰值的位置吗? 我认为最流行的方法是 Levenberg-Marquardt 算法。

    我不知道任何 Java 库,但我会搜索以下术语:非线性曲线拟合、非线性最小二乘法、Levenberg–Marquardt 或只是 Marquardt 方法。您也可以考虑自己编写代码。如果您有一个用于矩阵操作的库,那么它就像 20-30 行代码(请参阅数字食谱)。

    最后,我的program for peak detection and peak fitting(峰值表示钟形曲线)在 GPL 上。它包括一个库 (libfityk) 和基于 SWIG 的 Python 和 Lua 库绑定。有人报告说还生成 Java 绑定并使用来自 Java 的 libfityk。但老实说,这可能对您的需求有点过头了。

    【讨论】:

      【解决方案2】:

      不确定您是否找到了答案,但您当然可以使用 Apache Commons Math http://commons.apache.org/math/index.html 它有几个曲线拟合方法以及 Levenberg-Marquardt 库的实现。

      【讨论】:

        猜你喜欢
        • 2023-04-06
        • 1970-01-01
        • 1970-01-01
        • 2018-03-12
        • 2016-10-01
        • 2017-02-23
        • 2021-06-22
        • 2014-12-01
        • 2013-07-29
        相关资源
        最近更新 更多