首页 文章

绘图曲线适合错误栏

提问于
浏览
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() 一起使用的唯一原因是曲线拟合工具箱中有an overloaded version of plot(),它与正常的 plot() 完全分开,它接受这些对象 .

How can I plot cftool fits with errorbars?

3 回答

  • 2

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

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

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

    yFit = feval(fitresult, xData);
    errorbar(xData,yFit,xError,yError);
    
  • 0

    我不确定你希望如何将错误栏纳入你的 Health 状态 .

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

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

相关问题