Igor Pro实用教程:图表绘制、数据分析与程序设计
上QQ阅读APP看书,第一时间看更新

3.1.2 基本拟合

命令CurveFit、FuncFit和FuncFitMD用于数据拟合。CurveFit使用Igor内置的数学模型进行常见的、简单的数据拟合。FuncFit使用用户自定义公式或者数学模型进行任意复杂的数据拟合。CurveFit能完成的拟合FuncFit都可以完成。FuncFitMD是FuncFit的多变量版本,用来对多变量数学模型或者公式进行拟合。

Igor提供了从简单到复杂的拟合操作,以适应不同的数据拟合环境。根据使用的复杂性可分为3个层次。

(1)利用菜单【Quick Fit】进行拟合。

(2)利用【Curve Fitting】对话框进行拟合。

(3)调用拟合命令结合自定义函数进行拟合。

1.利用【Quick Fit】拟合

先显示要拟合的曲线,然后在曲线上右击,在弹出的快捷菜单中选择【Quick Fit】命令并选择合适的数学公式,就可以完成一次拟合。Igor会自动调用CurveFit命令完成拟合过程。下面用一个实例进行介绍。

首先创建一个要拟合的wave:

      Make/O/N=100 trialwave;
       Setscale/I x, -1,3, trialwave;
      trialwave=exp(-0.1∗x)+gnoise(0.02);
      Display trialwave;
      ModifyGraph mode=3;

上面创建了一个长度为100的wave,并取名为trialwave,设置该wave的x坐标为-1~3,然后调用数学函数exp给trialwave赋值。为了模拟实验数据的随机性,利用随机函数gnoise叠加了一个标准偏差为0.02的随机数值,然后在Graph窗口中显示这个wave。显示的wave如图3-1所示。

图3-1 待拟合的模拟实验数据

在上述曲线上右击,在弹出的快捷菜单中选择【Quick Fit】命令并选择exp公式就可以完成拟合,效果如图3-2所示。

图3-2 利用【Quick Fit】拟合曲线示例

图3-2中光滑实线就是拟合结果曲线。同时在命令行窗口也会输出一系列的信息,这些信息就是拟合的输出结果。

2.利用数据拟合对话框自定义拟合

Igor提供了一个数据拟合面板以完成更加复杂的数据拟合,执行菜单命令【Analysis】|【Curve Fitting】打开数据拟合对话框,通过面板可以选择或设定要拟合的数据、拟合函数、拟合数据的范围、初始参数、拟合输出结果等。对于本例,在拟合数据对话框中【Function】(函数类型)选择exp, 【Y data】(数据)选择trialwave,其他的全部选择默认设置就可以了,如图3-3所示。

图3-3 利用数据拟合对话框对数据进行拟合

关于拟合对话框的详细介绍和使用请参看本书第3.1.4节和第3.1.5节。

3.利用拟合命令进行拟合

在命令行窗口或者程序中调用CurveFit或FuncFit命令,也可以完成数据拟合,不过这种方法对使用者的要求较高,要求使用者不但熟悉拟合的过程和机制,还要求掌握编程方法。需要说明的是,前面【Quick Fit】和数据拟合对话框最后其实都调用了CurveFit或者FuncFit这两个命令。特别是自定义拟合对话框本质上就是FuncFit命令使用的图形用户界面。

使用拟合命令(编程)的一般步骤如下:

(1)创建一个自定义函数。

        Function fitfun(coef, x):Fitfunc
       wave coef
      variable x
     <Exressions>
    End

(2)创建一个wave,存放初始参数值。

      Make/O coef={a1, a2, a3, …}

(3)调用拟合命令,将自定义函数和初始参数传递给Curvefit或者Funcfit。

        Funcfit fitfun, coef, ydata/D

(4)拟合的结果就是coef中参数的值。coef在开始拟合时提供初始参数,在拟合过程中存放拟合结果。

对于初学者,更常见的方法是利用拟合对话框拟合。Igor会自动生成相应的拟合函数和正确的拟合命令。这样在完成拟合的同时,也可以学习和掌握编写程序拟合数据的技巧和方法。

拟合分为单次拟合和批量拟合。单次拟合指一次只对一个wave拟合,批量拟合指一次对多个wave进行拟合。批量拟合需要多次重复调用拟合命令,因此快速拟合和利用数据拟合对话框进行拟合一般适用于单次拟合,利用命令行结合编程技术拟合适用于批量拟合。