在曲线

时间:2017-11-29 14:57:59

标签: r

我正在尝试将曲线拟合到点以计算最大值和中心值。

我有二维数据(x和y轴),我使用包pracmafindpeak函数来检测此矩阵中的峰值。

peak <- structure(c(86.0953485633098, 86.0955380284491, 86.0957274942138, 
                    86.095916960604, 86.0961064276196, 86.0962958952606, 86.096485363527, 
                    86.0966748324189, 86.0968643019362, 86.0970537720789, 86.097243242847, 
                    86.0974327142406, 86.0976221862597, 86.0978116589041, 86.0980011321741, 
                    86.0981906060695, 86.0983800805903, 86.0985695557366, 0, 178.362274169922, 
                    1118.56115722656, 1993.09130859375, 2681.42016601562, 3771.77612304688, 
                    12054.2744140625, 41142.8828125, 82771.796875, 126647.4296875, 
                    124873.390625, 80395.8046875, 38812.58203125, 11192.2685546875, 
                    3193.95947265625, 1768.93249511719, 487.752838134766, 0), 
                  .Dim = c(18L, 2L))
pracma::findpeaks(peak[,2])
plot(peak)

我的问题是,findpeak只给出了数据点内的最大值,但我想通过绘图,每个人都可以想象最大值有点高,而且在不同的y坐标上。我期望的大致是x=86.09712y=12750.00 ......就像那样。

我发现MASS::fitdistr但这只适用于发行版,而不适用于我的数据。我想我的问题已经被问到,但我找不到解决方案,也许我错过了正确的搜索词汇。

1 个答案:

答案 0 :(得分:2)

一种方法是创建一个模型,然后使用predict在你知道它的高范围内找到拟合值,在这个范围内可以找到{{1 }}:

which.max

这种方法仅限于一次找到一个峰值,但对于多模态数据,信号处理领域可能存在更强大的替代方案。