Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/matlab/15.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Matlab 用误差条绘制曲线拟合_Matlab - Fatal编程技术网

Matlab 用误差条绘制曲线拟合

Matlab 用误差条绘制曲线拟合,matlab,Matlab,使用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

使用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()
,它接受这些对象


如何绘制cftool fits与errorbars的配合?

我不确定您希望如何将errorbars纳入您的配合中

如果要同时显示“a”和“b”以及表示CI的错误条,可以使用以下函数提取CI:

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

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


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

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

我使用的是独立于拟合的自定义错误条,所以这不是我想要的。这会将错误条放在拟合上,而不是数据上。尽管如此,这个想法还是很有用。如果你想在原始数据上显示错误条,那么你就不能在原始数据中使用errorbar()?
plot(fitresult, xData, yData);
hold on;
errorbar(xData,yData,errors, '.');