ma tl a b多项式拟合(生成数据、添加噪声、最小二乘法拟合)
时间: 2023-12-24 07:06:04 浏览: 96
ols.rar_ols MATLAB_多项式 拟合 _拟合 matlab_最小二乘_鏈?灏忎簩涔樻硶
以下是一个使用 MATLAB 进行多项式拟合的完整示例,包括生成数据、添加噪声和最小二乘法拟合:
```matlab
% 生成数据
x = linspace(0, 1, 20)';
y = sin(2*pi*x);
% 添加噪声
noise = randn(size(x))*0.2;
y_noisy = y + noise;
% 绘制原始数据和带噪声的数据
figure;
subplot(2,1,1);
plot(x, y, 'o');
title('Original Data');
subplot(2,1,2);
plot(x, y_noisy, 'o');
title('Noisy Data');
% 进行多项式拟合
degree = 5; % 多项式次数
p = polyfit(x, y_noisy, degree);
% 在新点上计算拟合的多项式
x_new = linspace(0, 1, 100)';
y_new = polyval(p, x_new);
% 绘制拟合的结果
figure;
plot(x, y_noisy, 'o', x_new, y_new);
title('Polynomial Fit');
legend('Noisy Data', 'Polynomial Fit');
```
首先,我们使用 `linspace` 函数生成 20 个等间距的数据点,并计算每个点的正弦值作为原始数据。然后,我们使用 `randn` 函数生成一个噪声向量,并将其添加到原始数据中,得到带噪声的数据。我们使用 `subplot` 函数创建一个图形,显示原始数据和带噪声的数据。
然后,我们使用 `polyfit` 函数将多项式拟合到带噪声的数据中。我们指定多项式的次数为 5,但您可以根据需要调整它。然后,我们使用 `polyval` 函数在新点上计算拟合的多项式,并使用 `plot` 函数绘制拟合的结果。我们在图例中包括了带噪声的数据和拟合的多项式。
这是一个简单的示例,但您可以根据需要添加自己的数据和调整拟合的多项式次数。
阅读全文