关于matlab:绘制曲线拟合误差线

Plot curve fit with errorbars

当使用 Matlab 包 cftool 进行曲线拟合时,可以选择生成与拟合对应的代码。这是一个示例结果:

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
%% Fit: 'myfit'.
[xData, yData, weights] = prepareCurveData( x, y, weights);

% Set up fittype and options.
ft = fittype( 'a^x+b', 'independent', 'x', 'dependent', 'y' );
opts = fitoptions( ft );
opts.Display = 'Off';
opts.Lower = [-Inf -Inf];
opts.StartPoint = [0 0];
opts.Upper = [Inf Inf];
opts.Weights = weights;

% Fit model to data.
[fitresult, gof] = fit( xData, yData, ft, opts );

% Plot fit with data.
figure( 'Name', 'myfit' );
h = plot( fitresult, xData, yData );
% Label axes
xlabel( 'x' );
ylabel( 'y' );
grid on

我想使用单独的错误向量绘制与自定义误差线相同的拟合。通常,我会使用函数 errorbar() 代替 plot(),但它不接受像此代码中的 fitresult 这样的 fitobject 对象。事实上,这段代码与 plot() 一起工作的唯一原因是曲线拟合工具箱中有一个重载的 plot() 版本,与正常的 plot() 完全分开,它确实接受这些对象。

如何绘制 cftool 拟合误差线?


要在数据上绘制拟合和误差条,而不是拟合,使用:

1
2
3
plot(fitresult, xData, yData);
hold on;
errorbar(xData,yData,errors, '.');

你已经有了拟合,所以你可以使用 feval() 插值拟合的 y 值。将此数据与您的自定义错误配对并将其发送到 errorbar()

1
2
yFit = feval(fitresult, xData);
errorbar(xData,yFit,xError,yError);


我不确定您希望如何将误差线纳入您的健康。

如果您想同时显示 \\'a\\' 和 \\'b\\' 以及代表 CI 的错误栏,您可以使用 confint 函数提取 CI:

1
errorbar([fitresult.a; fitresult.b], diff(confint(fitresult))/2,'x')