2010-05-16 42 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對原始峯值的貢獻的可視化,例如,高斯人應該並排繪製(而不是像上面那樣繪製他們的總和)。要解決這個問題

回答