如何从曲线拟合中提取残差

How to extract residuals from curvefit

我在 Matlab R2016a 中使用曲线拟合来找到两个数组之间的最佳拟合。一个数组代表给定纬度和经度的特定值,另一个数组代表收集该值的日期。

在使用曲线拟合工具时,我能够找到最佳拟合线并绘制残差。我只关心残差——但是,当我将残差导出到工作区时,它们表示为一列数字。如果没有残差与原始数组关系的识别信息,这对我没有帮助(即,每个残差对应于哪个 X,Y 对?)

曲线拟合工具中残差图的数据正是我想要的。有没有办法以使其可用的方式导出它?

cftool 的核心是 fit。要进一步探索拟合及其残差,您可以做的是将拟合导出到您的工作区。通过曲线拟合工具 window 顶部的 'Fit' 菜单执行此操作,然后是 select 'Save to Workspace'。使用此拟合对象(cfit 表示曲线或 sfit 表示曲面),您可以进行与曲线拟合工具相同的分析,甚至更多。

让我来说明如何获得拟合、创建残差图以及如何计算残差。生成的图像如下所示。在代码中,residuals 变量包含与属于 xy.

中每个样本对的每个元素的拟合残差
% Generate data
rng default
x = sort(rand(10, 1));
y = randn(size(x)) - 3*x;

% Fit a line
fitted = fit(x, y, fittype('poly1'));

% Plot fitted line with data
figure
subplot 311
plot(fitted, x, y)

% Plot residuals
subplot 312
plot(fitted, x, y, 'residuals)')
ylabel residuals

% Get residuals
residuals = y - fitted(x);

% Create stem plot of residuals
subplot 313
stem(x, residuals)
legend residuals
xlabel x
ylabel residuals