我正在尝试拟合由卷积指数的高斯分布描述的数据。一些完美模拟数据的例子来说明我的观点:
clc; clear all
modeValue = 40; % mode value of our simulated gaussian
sig = 4; % variance
values = [1:0.5:100]; % vector for gaussian to be evaluated at
gauss=(1/(sqrt(2*pi)*sig)).*exp(-(values-modeValue).^2/(2*sig^2))'; % create our gaussian
gauss=gauss./max(gauss); % normalize
tau = logspace(-6,2,256); % generate our simulated x-data
for ii = 1:1:length(values)
data(:,ii) = exp(-tau.*values(ii)); % generated a data set
end
dataConv = data*gauss; % Multiply each data set by the corresponding gaussian weight
dataConv = dataConv./max(dataConv); % This is our final simulated data
semilogx(tau,dataConv,'ro');
如果此代码在MATLAB
中运行,则会创建完美生成的数据集dataConv
。
我现在的目标是通过对生成的数据执行gauss
来恢复我们的lsqcurvefit
图。我们的想法是为modeValue
,sig
和values
提供一个起始值,让MATLAB
自动选择它们,生成所有衰减曲线,将所有衰变曲线卷入1个数据集,检查拟合,然后返回并调整输入值。
我可以使用lsqcurvefit
来拟合单个指数,但不知道如何做我想要做的事情。任何帮助是极大的赞赏。感谢