有没有人知道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-fitting或peak-finding,因为我没有足够的声誉来制作新的标记……
编辑:我更喜欢Apache (或兼容的)许可代码...
发布于 2010-07-14 20:23:10
你想用最小二乘拟合来确定峰位吗?我认为最流行的方法是Levenberg-Marquardt算法。
我不知道任何Java库,但我会搜索以下术语:非线性曲线拟合、非线性最小二乘、Levenberg- Marquardt或仅Marquardt方法。您也可以考虑自己编写代码。如果你有一个用于矩阵操作的库,那么它就像20-30行代码(参见数字处方)。
最后,在GPL上有我的program for peak detection and peak fitting (峰值表示钟形曲线)。它包括一个库(libfityk)和到该库的基于SWIG的Python和Lua绑定。有人报告说,还生成了Java绑定,并使用了Java中的libfityk。但老实说,这可能是对您的需求的过度杀伤力。
发布于 2011-01-18 05:47:45
不知道你是否已经找到了这个问题的答案,但是你肯定可以使用Apache Commons Math http://commons.apache.org/math/index.html,它有几个曲线拟合方法以及一个Levenberg-Marquardt库的实现。
https://stackoverflow.com/questions/3233722
复制相似问题