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

标签 matlab matrix curve-fitting

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

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

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

最佳答案

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

关于matlab - 如何从曲线拟合中提取残差,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/43579762/

相关文章:

matlab - 有没有办法在 MATLAB 中查看 pcode 文件 (.p) 的源代码?

arrays - 通过引用函数传递二维数组

matlab - 如何在 Matlab 中找到连接数据点的绘图方程?

python - 我如何在 python 中使用 pcov 来获取每个参数的错误?

python - 如何将整数日期格式转换为 YYYYMMDD?

matlab - 将 MATLAB 对象转换为结构体?

matlab - 有比这更好的矢量化技术吗?

r - R中矩阵的就地修改

matlab - 从具有特定索引的向量创建矩阵,无需循环

python - 曲线拟合参数范围