快乐8体育 MATLAB最小二乘曲线拟合公式

日期:2021-04-01 05:08:38 浏览量: 106

假设y = f(x)亚博vip登陆 ,则每个x应对应一个y。对于具有未知公式的f(x)系统,在科学实验中凤凰彩票app ,通常需要测量两个变量的多组数据matlab最小二乘法拟合曲面,然后找出它们的近似函数关系。通常,我们称这种处理数据经验接线的方法亚博买球 ,发现的函数关系称为经验公式。最小二乘方法是最常用的接线方法。

最小二乘法是一种数学优化技术亚博直播软件 ,可通过最小误差的平方和求出一组数据的最佳函数匹配。最小二乘法通常用于曲线拟合。

接下来,我们使用一个示例来研究最小二乘函数polyfit的使用。

首先,通过数据收集og真人 ,获得y和x数据之间的一组对应关系,并将它们绘制成曲线。

x = [88    88    96    98    99   101   101   102   102   104   105   106   107   109   111   113   113   113   116   119   121   121   126   128   128   132   134   140   140   141   141  145   147   148  150   153   154   154   154   155   158   160   161   165   166   168   172   174];
y = [2.5882       2.7059       2.8729       2.8834       2.9814       3.0909       3.1638       3.2353       3.3929       3.5404       3.6158       3.7569       3.8235        3.865   3.8824       3.9286       3.9394       4.1765       4.2353       4.3558       4.5856       4.6061       4.6584       4.7059       4.7826       4.8066       4.8214       4.8824   4.9697       5.0847        5.092        5.092       5.1381       5.1553       5.1786       5.2381       5.2727       5.4118       5.4237       5.5882       5.5932       5.8564   5.9627        6.135       6.4972       6.6071       6.6471       6.8485];
plot(x,y,'o');

matlab最小二乘法拟合曲面

matlab最小二乘法拟合曲面

原始采样数据

通过polyfit进行一阶拟合

x = [88    88    96    98    99   101   101   102   102   104   105   106   107   109   111   113   113   113   116   119   121   121   126   128   128   132   134   140   140   141   141  145   147   148  150   153   154   154   154   155   158   160   161   165   166   168   172   174];
y = [2.5882       2.7059       2.8729       2.8834       2.9814       3.0909       3.1638       3.2353       3.3929       3.5404       3.6158       3.7569       3.8235        3.865   3.8824       3.9286       3.9394       4.1765       4.2353       4.3558       4.5856       4.6061       4.6584       4.7059       4.7826       4.8066       4.8214       4.8824   4.9697       5.0847        5.092        5.092       5.1381       5.1553       5.1786       5.2381       5.2727       5.4118       5.4237       5.5882       5.5932       5.8564   5.9627        6.135       6.4972       6.6071       6.6471       6.8485];
%一阶拟合
coefficient=polyfit(x,y,1);
%将拟合后系数带入公式 Y = P(1)*X^N + P(2)*X^(N-1) + ... + P(N)*X + P(N+1)
yn=polyval(coefficient,x);
plot(x,y,'o');hold on;
plot(x,yn,'-k');hold on;
legend(sprintf("x-y"),sprintf("yn = (%f)x + (%f)",coefficient(1,1),coefficient(1,2)));

matlab最小二乘法拟合曲面

matlab最小二乘法拟合曲面

一阶拟合的曲线效果

通过polyfit进行二阶拟合

x = [88    88    96    98    99   101   101   102   102   104   105   106   107   109   111   113   113   113   116   119   121   121   126   128   128   132   134   140   140   141   141  145   147   148  150   153   154   154   154   155   158   160   161   165   166   168   172   174];
y = [2.5882       2.7059       2.8729       2.8834       2.9814       3.0909       3.1638       3.2353       3.3929       3.5404       3.6158       3.7569       3.8235        3.865   3.8824       3.9286       3.9394       4.1765       4.2353       4.3558       4.5856       4.6061       4.6584       4.7059       4.7826       4.8066       4.8214       4.8824   4.9697       5.0847        5.092        5.092       5.1381       5.1553       5.1786       5.2381       5.2727       5.4118       5.4237       5.5882       5.5932       5.8564   5.9627        6.135       6.4972       6.6071       6.6471       6.8485];
%二阶拟合
coefficient=polyfit(x,y,2);
%将拟合后系数带入公式 Y = P(1)*X^N + P(2)*X^(N-1) + ... + P(N)*X + P(N+1)
yn=polyval(coefficient,x);
plot(x,y,'o');hold on;
plot(x,yn,'-k');hold on;
legend(sprintf("x-y"),sprintf("yn = (%f)x² + (%f)x + (%f)",coefficient(1,1),coefficient(1,2),coefficient(1,3)));

matlab最小二乘法拟合曲面

matlab最小二乘法拟合曲面

类似地,可以获得更多次的拟合效果

matlab最小二乘法拟合曲面

matlab最小二乘法拟合曲面

三阶拟合

matlab最小二乘法拟合曲面

matlab最小二乘法拟合曲面

6阶拟合

可以看出,在系统允许的条件下matlab最小二乘法拟合曲面,阶次越多,拟合曲线越接近实际测量曲线。如果以人工设计完成这项工作,将是一项非常繁琐的任务,最小二乘法非常适合解决此类曲线拟合工作。