Matlab:从拟合中提取误差值

时间:2014-12-23 18:08:07

标签: matlab curve-fitting

我使用以下代码导入一个电子表格,其中包含两个颜色x =强度和y =角度,并获得高斯曲线拟合:

%% Initialize variables
filename = ['E:\XRD\Enamel\MPS\3PC\Chiplots (starting from 0)\MPS_3Pcontrol_map_'  j '.dat'];
startRow = 5;

%% Format string for each line of text:
formatSpec = '%14f%f%[^\n\r]';

%% Open the text file.
fileID = fopen(filename,'r');

%% Read columns of data according to format string.
dataArray = textscan(fileID, formatSpec, 'Delimiter', '', 'WhiteSpace', '', 'HeaderLines' ,startRow-1, 'ReturnOnError', false);

%% Close the text file.
fclose(fileID);

%% Allocate imported array to column variable names
plots.angle = dataArray{:, 1};
plots.intensity = dataArray{:, 2};

%% Fit: 'Gauss'.
[xData, yData] = prepareCurveData(plots.(['angle' num2str(j)]), plots.(['intensity' num2str(j)]));
% Set up fittype and options.
ft = fittype( 'y0+a*exp(-((x-xa)/wa)^2) + b*exp(-((x-xb)/wb)^2) + c*exp(-((x-xc)/wc)^2) + d*exp(-((x-xd)/wd)^2) + e*exp(-((x-xe)/we)^2) + f*exp(-((x-xf)/wf)^2)', 'independent', 'x', 'dependent', 'y' );
opts = fitoptions( 'Method', 'NonlinearLeastSquares' );
opts.Display = 'Off';
opts.Lower = [0 0 0 0 0 0 0.1 0.1 0.1 0.1 0.1 0.1 -Inf -Inf -Inf -Inf -Inf -Inf -Inf];
opts.StartPoint = [1400 1400 1000 1200 1200 1000 25 25 25 25 25 25 75 125 170 250 275 325 0.5];
opts.Upper = [inf inf inf inf inf inf 50 50 50 50 50 50 inf inf inf inf inf inf Inf];
% Fit model to data.
[fitresult, gof] = fit( xData, yData, ft, opts );

我可以使用cfit(fitresult)获取系数的值来获得以下内容:

enter image description here

从上面我可以使用coeffvalues(cfit(fitresult))提取系数值:

enter image description here

问题是我无法将值突出显示为黄色,我需要使用公式计算标准误差(标准误差=标准偏差/ n的平方根)

我可以提取黄色突出显示的值以计算标准误差吗?

1 个答案:

答案 0 :(得分:1)

您需要使用confint功能。这将为您提供适合度的95%置信区间。它的工作原理如下:

confint(cfit(fitresult))

如果您想要自己的置信区间,可以这样设置:

confint(cfit(fitresult,[insert confidence interval here (such as 0.85)]))

那应该做你想要的。