峰值分解

时间:2010-05-16 19:52:01

标签: r

我想检查一个NMR幽灵,并使用一个高斯的总和来确定特定峰的最佳拟合。使用下面的代码可以将两个高斯拟合到峰值,但是它可以很容易地推广到n个高斯人吗?

freq <- seq(100, 200, 0.1)
signal <- 3.5*exp(-(freq-130)^2/50) + 0.2 + 1.5*exp(-(freq-120)^2/10)
simsignal <- rpois(length(signal), 100*signal) + rnorm(length(signal))
plot(freq, simsignal)
res <- nls(simsignal ~ bg + h1 * exp(-((freq - m1)/s1)^2) + h2 * exp(-((freq - m2)/s2)^2),
start=c(bg = 4, h1 = 300, m1 = 128, s1 = 6, h2 = 200, m2 = 122, s2 = 4), trace=T)
lines(freq, predict(res, freq), col='red')

另一个愿望是对每个高斯人对原始峰值的贡献进行可视化,例如。高斯人应该并排绘制(而不是像上面那样绘制他们的总和)。

1 个答案:

答案 0 :(得分:1)

解决此问题的一种方法是: “由一群高斯人拟合曲线”

可从以下网址获取:

http://www.engineering.wright.edu/~agoshtas/GMIP94.pdf