2017-04-24 532 views
2

我使用Matlab R2016a中的曲线拟合来找出两个阵列之间的最佳拟合。一个数组表示给定经度和纬度的某个值,另一个数组表示该值的收集日期。如何从curvefit中提取残差

在使用曲线拟合工具时,我能够找到最适合的线条并绘制残差。残差是我所关心的 - 但是,当我将残差输出到工作区时,它们被表示为一列数字。如果没有剩余与原始阵列的关系的识别信息(即每个残差对应哪个X,Y对),这对我没有帮助:

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

回答

1

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