如何从curvefit

时间:2017-04-24 04:21:06

标签: matlab matrix curve-fitting

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

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

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

1 个答案:

答案 0 :(得分:2)

cftool使用fit为核心。您可以采取哪些措施来进一步探索拟合及其残差,以便将拟合导出到您的工作区。通过曲线拟合工具窗口顶部的“适合”菜单执行此操作,然后选择“保存到工作区”。使用此拟合对象(曲线为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

Result of the code in the answer