设为首页收藏本站

EPS数据狗论坛

 找回密码
 立即注册

QQ登录

只需一步,快速开始

查看: 1959|回复: 0

利用MATLAB进行曲线拟合

[复制链接]

26

主题

207

金钱

343

积分

入门用户

发表于 2019-7-10 14:57:21 | 显示全部楼层 |阅读模式

软件环境:MATLAB2013a

一、多项式拟合
多项式拟合是利用多项式最佳地拟合观测数据,使得在观测数据点处的误差平方和最小。

在MATLAB中,利用函数ployfit和ployval进行多项式拟合。

函数ployfit根据观测数据及用户指定的多项式阶数得到光滑曲线的多项式表示,polyfit的一般调用格式为:P = polyfit(x,y,n)。其中x为自变量,y为因变量,n为多项式阶数。

polyval的输入可以是标量或矩阵,调用格式为

pv = polyval(p,a)
pv = polyval(p,A)
其中,p为多项式表示,a为标量,A为矩阵。当输入参数为M*N矩阵A时,函数返回值pv也是M*N矩阵,且pv(i,j) = polyval(p,A(i,j))。

1,多项式拟合示例:对ln(1+x)在[0,1]的采样数据作多项式拟合
(1)对ln(1+x)在[0,1]内采样得到观测数据x、y。
  1. >> x = 0:0.1:1.0;
  2. >> y = log(1+x);
复制代码


(2)调用函数polyfit对观测数据x、y作三阶多项式拟合。
  1. >> P = polyfit(x,y,3)
复制代码


运行结果如下:
1.png
P对应的多项式为0.1079 - 0.3974x + 0.9825x2 + 0.004x3.

(3)分别作拟合曲线和理论曲线
  1. >> xi = 0:0.01:1.0;
  2. >> yi = polyval(P,xi);   %多项式求值
  3. >> plot(x,y,'ro');         %观测数据点
  4. >> hold on;
  5. >> plot(xi,yi,'k');         %作拟合曲线
  6. >> plot(xi,log(1+xi),'g');    %理论曲线
  7. >> xlabel('x');
  8. >> ylabel('y');
  9. >> legend('采样数据','拟合曲线','精确曲线');
复制代码


效果如下:
2.png
二、指数函数拟合
1,指数函数拟合示例:对 1 - √x 在[0,1]的采样数据作指数函数拟合。
(1)对 1 - √x 在[0,1]内采样得到观测数据 x、y。
  1. >> x = 0:0.01:0.99;
  2. >> y = 1 - sqrt(x);
复制代码


(2)调用函数polyfit对 x 、lny 作一阶多项式拟合。
  1. >> P = polyfit(x,log(y),1)
复制代码

运行结果如下:
3.png

(3)求得拟合曲线。
  1. >> yi = exp(polyval(P,x));
复制代码


(4)分别作观测数据点、拟合曲线和理论曲线。
  1. >> yi = exp(polyval(P,x));
  2. >> plot(x,y,'k.');
  3. >> hold on;
  4. >> plot(x,yi,'r');
  5. >> xlabel('x');
  6. >> ylabel('y');
  7. >> legend('采样数据','拟合曲线');
  8. >> hold off;
复制代码

运行结果如下:
4.png

5)分析拟合误差。
  1. >> e = yi - y;
  2. >> plot(x,e);
  3. >> xlabel('x');
  4. >> ylabel('误差');
复制代码

运行结果如下:
5.png


三、交互式曲线拟合工具
MATLAB为用户提供了一个交互式曲线拟合工具 Basic Fitting interface。通过该工具,我们无须编写代码就可以完成一些常用的曲线拟合。
(1)载入census data数据。
  1. >> load census
复制代码

此时MATLAB基本工作空间生成两个double型列向量 cdate 和 pop,cdate 表示1790~1990内10年为间隔的年份,pop为对应年份美国的人口。
  1. >> whos
复制代码

运行结果如下:
6.png

(2)作census data点图。
  1. >> plot(cdate,pop,'ko');
复制代码

运行结果如下:
7.png

(3)在MATLAB的figure中选择Tool → Basic Fitting,即得到Basic Fitting interface 界面。
8.png
9.png
用户通过Plot fits面板选择不同的曲线拟合方式,为了便于比较,我们可以选择多种拟合方式,从而选择效果最好的一种拟合。

如果某次拟合的效果较差,MATLAB会给出警告,这时用户可以试着通过 Center and Scale X data 改善拟合效果。

如果Show equations复选框被选中,那么图形窗口会显示拟合方程;如果Plot residuals复选框被选中,那么拟合效果将显示误差余量。此外,还可以选择不同的显示类型,如Bar Plot(直方图)、Scatter Plot(散点图)、Line Plot(线图)。

如果Show norm of residuals复选框被选中,那么误差余量图将显示误差余量的范数。

单击 10.png ,得到如下界面,通过该界面我们能看到拟合的数值结果:
11.png
再次单击,得到如下界面。通过该界面右侧的面板,我们可以得到任意点处拟合函数的值,如在编辑框中输入 2000:10:2080,并单击Evaluate按钮,计算结果将显示在列表框中。如果Plot evaluated result复选框被选中,那么计算结果将显示在拟合曲线中。
12.png



您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

关闭

站长推荐上一条 /1 下一条

客服中心
关闭
在线时间:
周一~周五
8:30-17:30
QQ群:
653541906
联系电话:
010-85786021-8017
在线咨询
客服中心

意见反馈|网站地图|手机版|小黑屋|EPS数据狗论坛 ( 京ICP备09019565号-3 )   

Powered by BFIT! X3.4

© 2008-2028 BFIT Inc.

快速回复 返回顶部 返回列表