Matlab在GUI轴上绘制拟合图

时间:2013-12-22 22:26:46

标签: matlab matlab-figure curve-fitting

我可以在GUI上成功显示数据点(使用GUIDE构建)。 我就是这样做的:

t = t_rec(:);
d_PCr = d_PCr_rec(:);
plot(handles.axes_tau, t, d_PCr, 'wo', 'MarkerFaceColor', [0.5 0.5 0.5]);

但我想重叠这些数据点。 以下是我如何拟合数据:

ok_ = isfinite(t) & isfinite(d_PCr);
if ~all( ok_ )
    warning( 'GenerateMFile:IgnoringNansAndInfs', ...
        'Ignoring NaNs and Infs in data' );
end

st_ = [1.1 1.1 0.0945 ];
ft_ = fittype('a+b*[1-exp(-(x-300)/t1)]',...
    'dependent',{'y'},'independent',{'x'},...
    'coefficients',{'a', 'b', 't1'});

cf_ = fit(t(ok_), d_PCr(ok_), ft_, 'Startpoint', st_);

我应该采用什么语法来拟合我的数据点?

我的 axes_tau 已在add

1 个答案:

答案 0 :(得分:1)

假设您有2D拟合,它将作为cfit对象返回。 cfit函数可以直接评估tf_ = [t(1):((t(end)-t(1))/1000):t(end)]; % 1000 will make it smooth and dense. Pick a number that suits you. yf_ = feval(cf_, tf_); % Evaluate the fit plot(handles.axes_tau, tf_, yf_, 'k-'); 。假设你想绘制比原始数据更平滑的拟合。您可以执行以下操作来评估返回的拟合:

t(0)

由于拟合对象只是一组描述您拟合的分析函数的系数,因此您可以根据需要粗略或精细地对其进行采样。选择一组采样点,在屏幕上显示平滑的曲线。在此示例中,我刚刚从t(end)到{{1}}制作了1001个样本。