曲线拟合最小二乘法matlab
时间: 2024-12-28 12:25:20 浏览: 17
### Matlab 中实现曲线拟合最小二乘法
#### 使用 `polyfit` 函数进行多项式拟合
Matlab 提供了内置函数 `polyfit()` 来执行基于最小二乘法的多项式拟合。此函数能够根据输入的数据点 `(x, y)` 计算出最佳拟合多项式的系数向量 `p`,其调用方式如下:
```matlab
% 基本语法
p = polyfit(x, y, n);
[p, s] = polyfit(x, y, n);
[p, s, mu] = polyfit(x, y, n);
```
其中:
- `n`: 多项式的阶数;
- 返回值 `p` 是长度为 `n+1` 的系数向量,按降幂排列。
为了更好地理解整个过程,下面给出一个完整的例子,展示如何使用 `polyfit` 进行二次(即抛物线型)拟合,并绘制原始数据以及拟合后的曲线图像[^1]。
```matlab
% 创建样本数据集
x = linspace(-5, 5, 20)';
noise = randn(size(x)); % 添加随机噪声
y = 3*x.^2 + 2*x + noise;
% 执行二次拟合 (n=2)
degree = 2;
coefficients = polyfit(x, y, degree);
% 构建用于绘图的新 x 序列并计算对应的预测值
xfit = linspace(min(x), max(x));
yfit = polyval(coefficients, xfit);
% 绘制结果对比图
figure();
plot(x, y, 'o', ... % 显示散点图
xfit, yfit, '-r'); % 展示拟合曲线
xlabel('X Axis');
ylabel('Y Axis');
legend({'Data Points', ['Fitted Curve: ', sprintf('%+.2fx^2 %+d', coefficients)]});
grid on;
title(['Polynomial Fit of Degree ', num2str(degree)]);
```
这段代码首先创建了一组带有轻微高斯白噪干扰的人工生成数据作为训练集;接着应用 `polyfit` 对这组数据进行了二次方程形式的最佳逼近操作;最后通过图形界面直观呈现两者之间的关系变化趋势。
对于更复杂的模型或者当已知目标函数的具体表达式时,则可能需要用到其他类型的工具箱或自定义算法来完成相应的非线性回归分析任务[^4]。
阅读全文