最小二乘法matlab代码含有误差曲线
时间: 2023-06-23 20:53:54 浏览: 123
下面是带有误差曲线的最小二乘法的MATLAB代码示例,同样假设有一组数据 (x, y),要拟合成一条直线 y = ax + b:
```matlab
% 输入数据
x = [1 2 3 4 5];
y = [1.2 1.9 3.2 4.1 5.3];
% 最小二乘法拟合
A = [x' ones(size(x'))];
b = y';
X = (A'*A)\(A'*b);
% 计算误差曲线
y_fit = A*X; % 拟合值
residuals = y - y_fit; % 残差
SSresid = sum(residuals.^2); % 残差平方和
SStotal = (length(y)-1) * var(y); % 总离差平方和
R2 = 1 - SSresid/SStotal; % R2系数
RMSE = sqrt(SSresid/length(y)); % 均方根误差
% 输出结果
a = X(1);
b = X(2);
fprintf('拟合直线为:y = %.2fx + %.2f\n', a, b);
fprintf('R2系数为:%.2f\n', R2);
fprintf('均方根误差为:%.2f\n', RMSE);
% 绘制图像
plot(x, y, 'ro');
hold on;
plot(x, y_fit, 'b-');
plot(x, y_fit+residuals, 'm--');
plot(x, y_fit-residuals, 'm--');
legend('原始数据', '拟合直线', '误差曲线');
```
其中,R2系数和均方根误差是用来衡量拟合效果的常用指标。误差曲线可以反映拟合值和实际值之间的差异。图中紫色虚线表示误差曲线。
阅读全文