利⽤MATLAB进⾏曲线拟合
软件环境: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。
>> x = 0:0.1:1.0;
>> y = log(1+x);
(2)调⽤函数polyfit对观测数据x、y作三阶多项式拟合。
>> P = polyfit(x,y,3)
运⾏结果如下:
P对应的多项式为0.1079 - 0.3974x + 0.9825x2 + 0.004x3.
(3)分别作拟合曲线和理论曲线
>> xi = 0:0.01:1.0;
>> yi = polyval(P,xi); %多项式求值
>> plot(x,y,'ro'); %观测数据点
>> hold on;
>> plot(xi,yi,'k'); %作拟合曲线
>> plot(xi,log(1+xi),'g'); %理论曲线
>> xlabel('x');
>> ylabel('y');
>> legend('采样数据','拟合曲线','精确曲线');
效果如下:
⼆、指数函数拟合
1,指数函数拟合⽰例:对 1 - √x 在[0,1]的采样数据作指数函数拟合。
(1)对 1 - √x 在[0,1]内采样得到观测数据 x、y。
>> x = 0:0.01:0.99;
>> y = 1 - sqrt(x);
(2)调⽤函数polyfit对 x 、lny 作⼀阶多项式拟合。
>> P = polyfit(x,log(y),1)
运⾏结果如下:
(3)求得拟合曲线。
>> yi = exp(polyval(P,x));
(4)分别作观测数据点、拟合曲线和理论曲线。
>> yi = exp(polyval(P,x));
>> plot(x,y,'k.');
>> hold on;
>> plot(x,yi,'r');
>> xlabel('x');
>> ylabel('y');
>> legend('采样数据','拟合曲线');
>> hold off;
运⾏结果如下:
(5)分析拟合误差。
>> e = yi - y;
>> plot(x,e);
>> xlabel('x');
>> ylabel('误差');
运⾏结果如下:
三、交互式曲线拟合⼯具
MATLAB为⽤户提供了⼀个交互式曲线拟合⼯具 Basic Fitting interface。通过该⼯具,我们⽆须编写代码就可以完成⼀些常⽤的曲线拟合。
(1)载⼊census data数据。
>> load census
此时MATLAB基本⼯作空间⽣成两个double型列向量 cdate 和 pop,cdate 表⽰1790~1990内10年为间隔的年份,pop为对应年份美国的⼈⼝。>> whos
运⾏结果如下:
(2)作census data点图。
>> plot(cdate,pop,'ko');
运⾏结果如下:
(3)在MATLAB的figure中选择Tool → Basic Fitting,即得到Basic Fitting interface 界⾯。matlab拟合数据
⽤户通过Plot fits⾯板选择不同的曲线拟合⽅式,为了便于⽐较,我们可以选择多种拟合⽅式,从⽽选择效果最好的⼀种拟合。
如果某次拟合的效果较差,MATLAB会给出警告,这时⽤户可以试着通过 Center and Scale X data 改善拟合效果。
如果Show equations复选框被选中,那么图形窗⼝会显⽰拟合⽅程;如果Plot residuals复选框被选中,那么拟合效果将显⽰误差余量。此外,还可以选择不同的显⽰类型,如Bar Plot(直⽅图)、Scatter Plo
t(散点图)、Line Plot(线图)。
如果Show norm of residuals复选框被选中,那么误差余量图将显⽰误差余量的范数。
单击,得到如下界⾯,通过该界⾯我们能看到拟合的数值结果:
再次单击,得到如下界⾯。通过该界⾯右侧的⾯板,我们可以得到任意点处拟合函数的值,如在编辑框中输⼊ 2000:10:2080,并单击Evaluate按钮,计算结果将显⽰在列表框中。如果Plot evaluated result复选框被选中,那么计算结果将显⽰在拟合曲线中。
版权声明:本站内容均来自互联网,仅供演示用,请勿用于商业和其他非法用途。如果侵犯了您的权益请与我们联系QQ:729038198,我们将在24小时内删除。
发表评论