曲线拟合 MATLAB代码
时间: 2024-04-14 09:12:39 浏览: 8
以下是用MATLAB进行曲线拟合的例子:
假设我们有一组数据,需要用多项式函数拟合:
x = [1 2 3 4 5 6 7];
y = [1.2 1.9 3.2 4.5 6.2 7.8 9.1];
我们可以使用polyfit函数拟合一个二次多项式:
p = polyfit(x,y,2);
这将返回一个长度为3的向量p,其中p(1)、p(2)和p(3)是二次多项式的系数。然后,我们可以使用polyval函数计算拟合曲线在给定的x值处的y值:
yfit = polyval(p,x);
最后,我们可以使用plot函数将原始数据和拟合曲线绘制在同一张图上:
plot(x,y,'o',x,yfit,'-')
完整的MATLAB代码如下:
% 原始数据
x = [1 2 3 4 5 6 7];
y = [1.2 1.9 3.2 4.5 6.2 7.8 9.1];
% 拟合二次多项式
p = polyfit(x,y,2);
% 计算拟合曲线上的y值
yfit = polyval(p,x);
% 绘制原始数据和拟合曲线
plot(x,y,'o',x,yfit,'-')
输出:
![image.png](attachment:image.png)
相关问题
最小二乘法多项式曲线拟合matlab代码
下面是一个使用MATLAB实现最小二乘法多项式曲线拟合的代码:
```matlab
% 输入数据
x = [-1.0,-0.5,0.0,0.5,1.0,1.5,2.0];
y = [-4.447,-0.452,0.551,0.048,-0.447,0.549,4.552];
% 拟合多项式的阶数
n = 3;
% 构造矩阵A和向量b
A = zeros(n+1,n+1);
b = zeros(n+1,1);
for i = 1:n+1
for j = 1:n+1
A(i,j) = sum(x.^(i+j-2)); end
b(i) = sum(y.*x.^(i-1));
end
% 求解线性方程组
alpha = A\b;
% 计算拟合函数的值
x0 = linspace(min(x),max(x),100);
y0 = zeros(size(x0));
for i = 1:n+1
y0 = y0 + alpha(i)*x0.^(i-1);
end
% 计算平方误差
r = sum((y - polyval(alpha,x)).^2);
% 绘制图像
plot(x,y,'o',x0,y0,'-');
xlabel('x');
ylabel('y');
title(['n=',num2str(n),', r=',num2str(r)]);
```
其中,输入数据x和y是已知的离散数据点,n是拟合多项式的阶数。代码中首先构造了矩阵A和向量b,然后求解线性方程组Ax=b得到拟合多项式的系数alpha。最后,计算拟合函数的值和平方误差,并绘制图像。
matlab曲线拟合代码
当然,我可以帮你提供一个基本的 Matlab 曲线拟合代码。在 Matlab 中,你可以使用 `polyfit` 函数进行多项式拟合。
以下是一个示例代码:
```matlab
% 原始数据
x = [1, 2, 3, 4, 5];
y = [1.2, 2.3, 3.4, 4.5, 5.6];
% 多项式拟合阶数
n = 2;
% 多项式拟合
p = polyfit(x, y, n);
% 绘制原始数据点和拟合曲线
plot(x, y, 'o', 'DisplayName', '原始数据');
hold on;
% 生成拟合曲线上的点
x_fit = linspace(min(x), max(x), 100);
y_fit = polyval(p, x_fit);
% 绘制拟合曲线
plot(x_fit, y_fit, 'r-', 'DisplayName', '拟合曲线');
legend('Location', 'best');
```
在这个示例中,我们有一组原始数据点 `x` 和 `y`,我们通过 `polyfit` 函数进行了二次多项式拟合。然后,我们使用 `polyval` 函数生成了拟合曲线上的点,并使用 `plot` 函数绘制了原始数据点和拟合曲线。
你可以根据你的实际需求修改示例代码中的数据和拟合阶数。希望这个示例对你有帮助!如果有任何问题,请随时提问。
相关推荐
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)