java峰拟合库

时间:2010-07-13 02:13:34

标签: java curve-fitting

有没有人知道Java的任何peakfitting库?

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

例如,对于这些数据:

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(或兼容)许可代码......

2 个答案:

答案 0 :(得分:1)

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

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

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

答案 1 :(得分:1)

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