2

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

%% 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(),但它不接受此代码中fitobject的对象fitresult。实际上,此代码使用的唯一原因plot()是曲线拟合工具箱中有一个重载版本,plot()与 normal 完全分开plot(),它确实接受这些对象。

如何绘制 cftool 适合误差线?

4

3 回答 3

2

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

plot(fitresult, xData, yData);
hold on;
errorbar(xData,yData,errors, '.');
于 2013-04-02T03:51:52.040 回答
1

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

yFit = feval(fitresult, xData);
errorbar(xData,yFit,xError,yError);
于 2013-04-01T05:06:36.173 回答
0

我不确定您希望如何将误差线纳入您的合身状态。

如果要同时显示 'a' 和 'b' 并带有代表 CI 的错误栏,可以使用confint函数提取 CI:

errorbar([fitresult.a; fitresult.b], diff(confint(fitresult))/2,'x')
于 2013-04-01T05:05:19.767 回答