2010-05-16 30 views
0

我想检查一个核磁共振的幽灵,并使用高斯总和作出特定峰的最佳拟合。用下面的代码可以将两个高斯函数拟合到峰值,但是它能够很容易地推广到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') 

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

回答