【问题标题】:Fitting gaussians to close peaks in MATLAB在 MATLAB 中拟合高斯以关闭峰值
【发布时间】:2017-02-23 03:50:24
【问题描述】:
我有一个数据集,其中有两个靠近的峰。我想用高斯拟合这些峰值,以便我想出一个复制原始数据集的新数据集。为此,我正在使用 MATLAB 的“findpeaks”函数,并使用峰的高度和宽度来得出适当数量的高斯,然后将这些高斯相加。但是,由于峰非常接近,结果如下所示(原始数据集为蓝色,复制的数据集为红色):
有没有更好的方法来复制具有高斯峰的数据?
【问题讨论】:
标签:
matlab
curve-fitting
gaussian
data-analysis
【解决方案1】:
高斯函数由两个变量定义,均值和方差。这两个峰值将为您提供两个高斯的均值,并且从图中看,它们的方差相同(如果某些数据经过高斯过程,方差将是相同的,我想不出一个物理过程,情况并非如此,除非它只是一个任意的情节)。所以你只需要找到一个变量。至于只是归一化的峰值,因此曲线下的面积总和为 1。默认情况下,高斯总和为 1,如果您尝试拟合的图下的总和为 2,则不需要做任何东西,否则相应地缩放。
我的猜测是这样的(伪代码):
f = 0.5*gauss(-3,var)+0.5*gauss(3,var)
如果您对创建情节的过程了解更多,那么您实际上可以做得更好。