我在Matlab R2016a中使用曲线拟合来找到两个阵列之间的最佳拟合。一个数组表示给定纬度和经度的特定值,另一个数组表示收集值的日期。
在使用曲线拟合工具时,我能够找到最佳拟合线以及绘制残差。残差是我所关心的 - 但是,当我将残差导出到工作空间时,它们被表示为一列数字。如果没有与原始数组的残差关系的识别信息(即,哪个X,Y对每个残差对应于哪个?),这对我没有帮助。
曲线拟合工具中残差图的数据正是我想要的。有没有办法以可以使用它的方式导出它?
答案 0 :(得分:2)
cftool
使用fit
为核心。您可以采取哪些措施来进一步探索拟合及其残差,以便将拟合导出到您的工作区。通过曲线拟合工具窗口顶部的“适合”菜单执行此操作,然后选择“保存到工作区”。使用此拟合对象(曲线为cfit
或曲面为sfit
),您可以使用曲线拟合工具进行相同的分析。
让我举例说明如何获得拟合,创建残差图以及如何计算残差。生成的图像如下所示。在代码中,residuals
变量包含x
和y
中属于每个样本对的每个元素的拟合残差。
% 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