中国科技论文在线
 
           
http://www.paper.edu.cn 
利用 MATLAB 曲线拟合工具箱求离散点的拟
合曲线 
陈巍*
(辽宁工程技术大学 理学院,辽宁 阜新  123000) 
摘要:曲线拟合是数值分析中的一种普遍且重要的方法,求解拟合曲线的方法也有很多.本
文主要介绍利用 MATLAB 曲线拟合工具箱对离散数据点做拟合处理,并与利用最小二乘法
求相应的拟合曲线的方法做对比,突出 MATLAB 曲线拟合工具箱的优点,并阐述了其适用
范围.最后通过利用 MATLAB 曲线拟合工具箱对实例中离散数据的拟合来具体说明它的使
用方法和优点. 
关键词:  数值分析;MATLAB;曲线拟合;最小二乘法 
中图分类号:O241 
 
Utilize the curve-fitting toolbox of MATLAB to seek fitted 
curve of some disciete points 
Chen Wei 
(Liaoning Technical University College of Science,Liaoning Fuxin 123000) 
Abstract: Curve fitting is a common and important method in numerical analysis and there are a lot of 
approaches  for  solving  fitted  curve  .This  paper mainly  introduce  the  method  that  utilize  the  Curve- 
Fitting  Toolbox  of  MATLAB  to  fit  some  discrete  data  points  and  contrast  with  the  method  of  the 
minimum squares. Through the contrast, it highlight the advantage of MATLAB Curve-Fitting Toolbox 
and elaborate its scope. At last, this paper specify the usage and the advantage of MATLAB Curve- 
Fitting Toolbox by example. 
Key words: numerical analysis; MATLAB; Curve-Fitting; minimum squares 
 
0  引言 
在很多实际情况中,两个变量之间的关系往往很难用具体的表达式把它表示出来,通常
只能通过实际测量得到一些互不相同的离散数据点.需要利用这些已知的数据点估计出两个
变量的关系或工件的具体轮廓,并要得到任意未知数据点的具体数值,这个过程就需要用到
拟合或差值方法来实现.本文主要讨论拟合的方法. 
曲线拟合可以通过 MATLAB 编程来完成,通常为了达到更好的拟合效果需要做多次重
复修改,对于非线性曲线拟合还需要编写复杂的 M-文件.运用 MATLAB 曲线拟合工具箱来
实现离散数据点的曲线拟合是一种直观并且简洁的方法. 
1  曲线拟合的最小二乘法理论 
假设给定了一些数据点(
)ii yx ,
,人们总希望能找到这样的近似函数,它既能反映所给数
据的一般趋势,又不会出现较大偏差,并且要使构造的函数与被逼近函数在一个给定区间上
的偏差满足某种要求.这种思想就是所谓的“曲线拟合”的思想. 
曲线拟合和差值不同,若要求通过所有给定的数据点是差值问题,若不要求曲线通过所
有给定的数据点,而只是要求它反映对象整体的变化趋势,这就是拟合问题.曲线拟合问题
                                                        
作者简介:陈巍(1985-),女,硕士研究生,主要研究方向:最优化理论. E-mail: weiweichen_5566@126.com 
- 1 - 
中国科技论文在线
 
http://www.paper.edu.cn 
最常用的解法是线性最小二乘法[1],步骤如下: 
( )
( )
<
第一步:先选定一组函数 
nmxr
,
xrxr
,
1
( )
( )
( )xra
+
mm+
=
xraxraxf
( )
,
+
, 2
( )
1    为待定系数. 
aa
,, 2
其中 
第二步:确定的准则(最小二乘准则):使n个点(
)i
i yx ,
ma
,
22
11
m
,令: 
 
  与曲线 
( )xfy =
  的距离
iδ   的平方和最小.记 
(
aaJ
2
,,
1
a
,
m
n
n
)
=
=
2
i
δ
∑
[
(
∑
xf
i
1  使 (
aa
,, 2
ma
,
=
i
=
i
1
1
1 
,, 2
aaJ
)
−
2
y
i
]
)ma
,
=
m
n
∑ ∑
=
i
1
=
k
1
⎡
⎢
⎣
(
xra
ikk
)
−
2
 
y
i
⎤
⎥
⎦
问题归结为,求
最小二乘法中如何选择数学模型很重要。用 MATLAB 解决曲线拟合问题通常有两种方
法:线性最小二乘拟合和非线性最小二乘拟合.对于两种方法的选择,要根据离散数据点位
置关系来确定,即首先将数据(
=
n
,
最小. 
作图,通过直观判断确定. 
axa
m
+
+
m
1
+
+
拟合.可利用已有
iyx ii
线性最小二乘法通常是做多项式 ( )
a
,
,2,1
)
,
m
xaxf
=
1
的程序
y
=
=
(
)myx
ployfit
,,
(
)xa
计算.做非线性最小二乘拟合时,应首先选择好适当的数学模型,如
,
ployval
其中 m代表拟合多项式的次数.多项式在x 处 y 的值可用命令
+
,令
Y ln=
bxae
= ln
,其中 ba, 为待定参数.此时可以把它转化成线性模型来计算,两边取对数得
=
,求这个线性模型的
bxa
lsqcurvefi 和lsqnonlin
mfun. ,在其中定义函数 ( )xf ,但两者定义 M-文件的
y =
ln
y
最小二乘问题.另外一种方法就是直接采用非线性拟合的函数
来计算.两个命令都要先建立 M-文件
方式有所不同. 
bxAY
A ln=
,于是有
,记
t
y
a
+
这些问题同样可以用 MATLAB 拟合工具[2]箱来实现,并且操作比较简单,误差等参数
也能一目了然的观察到. 
2  MATLAB 曲线拟合工具箱 
MATLAB 曲线拟合工具箱界面[3]是一个可视化的图形界面,具有强大的图形拟合功能,
其中包括:(1)可视化的展开一个或多个数据集,并可用散点图来表示;(2)用残差和置
信区间可视化的估计拟合结果的好坏;(3)通过其他界面还可以实现许多其他功能:比如
输出、查看和平滑数据;拟合数据,比较拟合曲线和数据集;从拟合曲线中排除特殊的数据
点;选定区间后可以显示拟合曲线和数据集.它把计算,可视化和程序设计融合到一个交互
的环境,在此环境中,利用强大的数值计算和图形功能,可高效求解一些复杂的工程问题及
实现计算结果的可视化. 
用 MATLAB 曲线拟合工具箱对离散数据进行拟合时,可使用 MATLAB 内部的库函数
或用户自定义的方程对参变量进行多项式、指数、有理数等形式的数据拟合. 
3  MATLAB 曲线拟合工具箱的应用举例 
在实际中,产品和工件的轮廓形状很难找到一个具体的数学表达式,通常只能通过实验
或数学计算得到一些离散点及其上的数值点.此时就需要选择合适的数学模型对其进行曲线
- 2 - 
中国科技论文在线
 
http://www.paper.edu.cn 
拟合,做出它的拟合曲线,从而估计出它的实际形状.下面通过一个例子说明一下用
MATLAB 曲线拟合工具箱对离散数据点进行曲线拟合,并与一般方法的比较. 
例1  已知机翼下轮廓上的数据如下表所示: 
 
表 1[4]  机翼下轮廓数据 
Tab. 1 under profile datum of airfoil   
机翼长(X)  0    3    5    7    9    11    12    13    14    15 
机翼宽(Y)  0   1.2  1.7  2.0  2.1   2.0   1.8   1.2   1.4   1.6 
 
用这些数据拟合轮廓形状. 
(1)用多项式最小二乘法编程方法:(分别用 3 次和 4 次进行拟合) 
>> x=[0,3,5,7,9,11,12,13,14,15]; 
>> y=[0,1.2,1.7,2.0,2.1,2.0,1.8,1.2,1.4,1.6]; 
>> A=polyfit(x,y,3) 
A =0.0013      -0.0523        0.5913      -0.0483 
>> z=polyval(A,x); 
>> plot(x,y,'k+',x,z,'r') 
同样的方法可以得到 4 次多项式拟合曲线,3 次和 4 次的拟合图像分别为: 
 
图 1    3 次拟合曲线                                                  图 2    4 次拟合曲线 
    
 
Fig. 1    cubic polynomial of fit                                    Fig. 2    4th degree polynomial of fit 
 
0013
3
x
.0
=
+
−
+
.0
+
+
拟合得到的多项式分别为:
)(
xf
.0
0523
2
x
.0
5913
x
−
.0
0483
 
=
−
.0
3
x
2
x
.0
0004
4
x
.0
0099
0544
)(
xf
(2)用 MATLAB 曲线拟合工具箱计算: 
>> x=[0,3,5,7,9,11,12,13,14,15]; 
>> y=[0,1.2,1.7,2.0,2.1,2.0,1.8,1.2,1.4,1.6]; 
>> cftool 
进入拟合工具箱界面,  然后点击 Data 按钮,在数据栏里选择数据 x 和 y.界面分别为: 
0214
2767
x
.0
 
- 3 - 
中国科技论文在线
 
http://www.paper.edu.cn 
图 3 曲线拟合工具箱界面                            图 4  “Data”对话框 
   
 
Fig.3    Curve‐Fitting Toolbox interface                                          Fig.4    “Data” dialogue box 
单击 Create data set 按钮,然后单击 Close 返回拟合工具箱界面.再单击 Fitting 按钮,先
选择 3 次多项式拟合方法,即在 Type of fit 中选择 Polynomial,然后在下面的选项中选择 cubic 
polynomial(图 5),单击 Apply 进行拟合得到图像(图 6).  以及结果:Linear model Poly3: 
 
          f(x) = p1*x^3 + p2*x^2 + p3*x + p4 
Coefficients (with 95% confidence bounds): 
              p1 =          0.00128    (-0.0008073, 0.003367) 
              p2 =        -0.05227    (-0.1001, -0.004396) 
              p3 =            0.5913    (0.2892, 0.8934) 
              p4 =          -0.0483    (-0.5768, 0.4802) 
Goodness of fit: 
    SSE: 0.2948 
    R-square: 0.9143 
    Adjusted R-square: 0.8714 
    RMSE: 0.2217 
图 5    “Fitting”对话框                                                          图 6    3 次拟合曲线 
    
 
Fig.5    “Fitting” dialogue box                                                    Fig. 6    cubic polynomial of fit 
- 4 - 
中国科技论文在线
 
http://www.paper.edu.cn 
从结果中可以看出,拟合得出多项式 
( )
xf
=
.0
00128
3
x
−
.0
05227
2
x
+
.0
5913
x
−
.0
 
,
0483
以及它的误差平方和 SSE 为 0.2948,相关系数平方和 R-square 为 0.9143,根的均方差
RMSE 为 0.2217. 
若需要进行 4 次拟合,只需在 Fitting 中的 New  fit 中选择 4 次多项式拟合就可以得到 4
次拟合图像和结果: 
 
图 7    3 次和 4 次多项式拟合 
Fig.7    cubic and 4th degree polynomial of fit 
 
 
+
 
所得拟合所得多项式为: 
−
.0
=
4
0003661
)(
x
xf
误差平方和为 0.1801. 
用这两种方法所得的结果基本相同,显然 4 次比 3 次的拟合效果要好.并且用拟合工具
009906
 
.
02141
05438
2767
2
x
3
x
.0
.0
.0
.0
x
+
+
箱求解更为方便直观. 
例2   下面为一组信号传播通路损耗的实测数据[5]: 
表 2    一组信号传播损耗测试数据 
Tab. 2    a group of signal propagation loss test datum 
-2.75 
-2.85 
-3 
-3.05 
-3.1 
-3.15 
-3.05 
-2.9 
-2.75 
频率(MHz)  损耗(dB) 频率(MHz)  损耗(dB) 频率(MHz) 损耗(dB) 频率(MHz)  损耗(dB)
-1.85 
-1.75 
-1.75 
-1.7 
-1.75 
-1.8 
-1.9 
-1.95 
30 
31.5 
33 
34.5 
36 
37.5 
39 
40.5 
42 
 
用曲线拟合工具箱对其进行拟合,采用 6 次多项式拟合,得图像如下: 
-2.6 
-2.45 
-2.25 
-2.1 
-2 
-2 
-2.1 
-2.15 
-2.3 
-2.4 
-2.55 
-2.6 
-2.7 
-2.6 
-2.6 
-2.45 
-2.3 
-2.05 
43.5 
45 
46.5 
48 
49.5 
51 
52.5 
54 
55.5 
57 
58.5 
60 
61.5 
63 
64.5 
66 
67.5 
69 
70.5 
71.5 
73 
74.5 
76 
77.5 
79 
81 
 
 
- 5 - 
中国科技论文在线
 
http://www.paper.edu.cn 
图 8    6 次多项式拟合 
Fig. 8    6th degree polynomial of fit 
 
下面再举一个非线性拟合的例子. 
例 3  用非线性拟合[6]的方法对下列一组数据进行拟合: 
 
 
表 3  快速静脉注射下的血药浓度数据 
Tab. 3 blood concentration datum under rapid intravenous injection 
t(h) 
c(
0.25 
19.21 
0.5 
18.15 
1 
1.5 
14.10 
2 
3 
9.32 
4 
7.45 
6 
5.24 
8 
3.01 
=
 
−
15.36 
12.98 
btae
,其中, ba, 是待定参数. 
ml
g /µ ) 
根据数据特点,选取数学模型: ( )
tc
(1)用 lsqucurvefit()函数做拟合: 
编写 M-文件:function f=curvefun1(x,tdata) 
          f=x(1)*exp(-x(2)*tdata 
输入程序:tdata=[0.25,0.5,1,1.5,2,3,4,6,8]; 
>> cdata=[19.21,18.15,15.36,14.10,12.89,9.32,7.45,5.24,3.01]; 
>> x0=[20,0.1]; 
>> x0=[0.2,0.05,0.05]; 
  x=lsqcurvefit ('curvefun1',x0,tdata,cdata) 
  f= curvefun1(x,tdata) 
x = 20.2413        0.2420 
f  =19.0532      17.9348      15.8911      14.0802      12.4757        9.7945        7.6894       
4.7394        2.9211 
f  =  19.0532      17.9348      15.8911      14.0802      12.4757        9.7945        7.6894       
4.7394        2.9211 
 
=
−
e
.0
2420
t
.20
)(
tc
2413
即
(2)用拟合工具箱计算: 
输入程序: 
>> tdata=[0.25,0.5,1,1.5,2,3,4,6,8]; 
- 6 - 
中国科技论文在线
 
http://www.paper.edu.cn 
>> cdata=[19.21,18.15,15.36,14.10,12.89,9.32,7.45,5.24,3.01]; 
>> cftool(tdata,cdata) 
打开拟合工具,在数据栏里选择数据,根据数据点的分布,选择 Custom Equations,然后
在 Custom Equations 中设置函数
=)(
tc
后进行拟合,所得图像为: 
−
btae
 
图 9    非线性拟合 
Fig. 9    nonlinear fit 
 
 
拟合结果为:
)(
tc
=
24.20
−
.0
242
te
,与 lsqucurvefit()函数方法结果相同. 
由此看出拟合工具箱首先可以画出数据点的散点图,便于选择模型;其次操作简便,省
去了复杂的编程工作;再次,结果以图像和数据两种方式给出,直观形象,并且结果中还给
出了判断拟合好坏的参数. 
4  结论 
本文给出了求离散数据点拟合曲线的 MATLAB 曲线拟合工具箱方法,并与通常使用的
利用拟合函数编程方法相比较,发现利用曲线拟合工具箱求解拟合曲线更加简捷和直观,并
且可视性效果很好. 
[参考文献] (References) 
[1]    李庆扬,关治,白峰山.数值计算原理[M].北京:清华大学出版社.2000:56-58. 
[2]    苏金明,张莲花,刘波等.MATLAB 工具箱应用[M].北京:电子工业出版社.2004. 
[3]    史立新,聂信天,季明.基于 MATLAB 曲线拟合工具箱的列表曲线拟合[J].新技术新工艺,2007(7). 
[4]    牛旭,李小平.利用三次样条差值法求机翼的拟合曲线[J].塔里木大学学报,2010(3). 
[5]    杨云升.MATLAB 曲线拟合及其在试验数据处理中的应用[J].电脑与信息技术,2009(4). 
[6]    陈文芳,许棠.利用 MATLAB 曲线拟合工具箱拟合 PN 结伏安特性曲线[J].计算机与数字工程,2007(10). 
 
 
 
 
 
 
- 7 -