matlab编程实现最小二乘,同时程序有注释,画图,误差曲线,程序有注释
时间: 2024-03-22 07:42:36 浏览: 19
下面是一个具有注释,画图和误差曲线的MATLAB程序,用于实现最小二乘法拟合:
```matlab
% 1. 输入数据
x = [1 2 3 4 5];
y = [1.2 1.9 3.2 4.1 5.3];
% 2. 最小二乘法拟合
A = [x' ones(size(x'))]; % 构造设计矩阵
b = y';
X = (A'*A)\(A'*b); % 求解参数向量
% 3. 计算误差曲线
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)); % 均方根误差
% 4. 输出结果
a = X(1);
b = X(2);
fprintf('拟合直线为:y = %.2fx + %.2f\n', a, b);
fprintf('R2系数为:%.2f\n', R2);
fprintf('均方根误差为:%.2f\n', RMSE);
% 5. 绘制图像
figure;
plot(x, y, 'ro');
hold on;
plot(x, y_fit, 'b-');
plot(x, y_fit+residuals, 'm--');
plot(x, y_fit-residuals, 'm--');
legend('原始数据', '拟合直线', '误差曲线');
xlabel('x');
ylabel('y');
title('最小二乘法拟合');
```
该程序首先输入数据,然后使用最小二乘法拟合这些数据,接着计算误差曲线并输出拟合结果。最后,程序绘制图像,包括原始数据,拟合直线和误差曲线。