【发布时间】:2018-11-10 05:52:13
【问题描述】:
现在我正在尝试用高斯拟合来拟合光谱数据。
我想构建一个循环来迭代每个峰值位置、吸光度和带宽的“猜测”范围内的值组合,直到我的 R^2 值最小化。
但是,我不知道如何构建我的代码。我正在考虑通过while循环运行它,直到R^2值低于某个阈值,但我不知道如何运行我的变量的所有组合......
有没有人知道从哪里开始?
谢谢!
这是我正在使用的:
peak1P <- seq(200, 300, 1) % Likely Peak Positions
peak2P <- seq(400, 550, 1)
peak3P <- seq(600,750, 1)
peak1A <- seq(0, 0.6, 1) % Likely Peak Absorbance
peak2A <- seq(0, 0.5, 1)
peak3A <- seq(0, 0.3, 1)
peak1B <- seq(0, 20, 1) # Likely Peak Bandwidth
peak2B <- seq(0, 20, 1)
peak3B <- seq(100,300, 1)
# Individual Peak Models
AbsG1 = peak1A*exp((-4*log(2))*(((((WvLnV/1500)-peak1P/1500)^2))/(peak1B/1500)))
AbsG2 = peak2A*exp((-4*log(2))*(((((WvLnV/1500)-peak2P/1500)^2))/(peak2B/1500)))
AbsG3 = peak3A*exp((-4*log(2))*(((((WvLnV/1500)-peak3P/1500)^2))/(peak3B/1500)))
# Final Fit to compare with Data
AbsF <- AbsG1 + AbsG2 + AbsG3
理想情况下,我的代码将遍历 peak(1-3)P、peak(1-3)A 和 peak(1-3)B 中的每个元素组合,直到误差最小化(我的计算函数此处未显示错误)
【问题讨论】:
标签: r