matlab 最小二乘代码
时间: 2024-09-12 10:16:20 浏览: 41
在MATLAB中,最小二乘法通常用于拟合一条曲线或者模型到一组数据点上,其核心思想是找到一条曲线,使得所有数据点到这条曲线的距离的平方和最小。MATLAB提供了多种函数来实现最小二乘法,比如`polyfit`用于多项式拟合,`lsqcurvefit`用于非线性数据拟合等。
以下是一个使用`polyfit`函数进行线性最小二乘拟合的简单例子:
```matlab
% 假设有一组数据点
x = [1, 2, 3, 4, 5]; % 自变量
y = [2, 4, 5, 4, 5]; % 因变量
% 使用polyfit进行一次多项式拟合(即线性拟合)
p = polyfit(x, y, 1);
% p是拟合得到的多项式系数,一次多项式系数有2个,即p=[a, b],其中y=ax+b
% 然后可以使用polyval来计算拟合曲线的y值
y_fit = polyval(p, x);
% 绘制原始数据点
plot(x, y, 'o');
hold on; % 保持图像,接下来绘制拟合曲线
% 绘制拟合曲线
plot(x, y_fit, '-');
hold off;
% 如果想要得到更精确的结果,比如决定系数R^2
y_mean = mean(y); % 计算y的均值
SStot = sum((y - y_mean).^2); % 总平方和
SSres = sum((y - y_fit).^2); % 残差平方和
R2 = 1 - SSres/SStot; % 决定系数
fprintf('决定系数R^2 = %f\n', R2);
```
在这段代码中,`polyfit`函数的第一个和第二个参数是数据点的x和y值,第三个参数是拟合多项式的阶数(在这个例子中是1,即线性拟合)。拟合完成后,`polyval`函数用于计算拟合多项式在给定x值下的y值。通过绘制原始数据点和拟合曲线,可以直观地看到拟合效果。此外,计算决定系数R^2可以帮助我们了解拟合曲线对数据的解释能力。
阅读全文