主要内容

自定义模型

自定义模型与库模型

如果“曲线拟合工具箱™”库不包含所需的参数方程,则可以创建自己的自定义方程。然而,库模型为快速收敛提供了最好的机会。这是因为:

  • 对于大多数库模型,工具箱计算最佳默认系数起点。对于自定义模型,工具箱在区间[0,1]上选择随机的默认起始点。您需要为定制模型找到合适的起点。

  • 库模型使用解析雅可比矩阵。定制模型使用有限差分。

线性与非线性拟合

您可以使用自定义方程拟合类型创建自定义通用方程。一般模型是(也许是非线性的)项的非线性组合。它们由参数中可能是非线性的方程定义。自定义方程拟合使用非线性最小二乘拟合程序。

您可以使用自定义方程拟合类型定义自定义线性方程,不过非线性拟合效率较低,通常比线性最小二乘拟合慢。

  • 如果你不知道你的方程是否可以表示为一组线性函数,那么选择自定义公式.您可能需要寻找合适的起点。

  • 如果需要自定义方程的线性最小二乘拟合,请选择线性拟合而是模型类型。看到自定义线性拟合

交互式选择自定义方程拟合

在“曲线拟合器”应用程序中曲线更健康选项卡,在适合类型部分,单击箭头打开图库。在合适的图库中,单击自定义公式自定义组。

合适的选项窗格中,使用自定义方程拟合来定义自己的方程。单击时,会出现一个自定义方程示例自定义公式,曲线数据如图所示。

曲线拟合的默认自定义方程

如果有曲面数据,则示例自定义方程同时使用这两种数据x而且y

表面拟合的默认自定义方程

  1. 你可以编辑xy,z到任何有效变量名。

  2. 在下面的框中,编辑示例以定义您自己的自定义方程。您可以输入任何有效的MATLAB®用变量名表示的表达式。您可以指定函数或脚本名称(请参阅在曲线拟合器App中拟合文件定义的曲线).

  3. 点击高级选项如果你想指定起点或边界。缺省情况下,起始值在间隔[0,1]上随机选择,并且不受约束。您可能需要搜索合适的起始点和边界。有关示例,请参见自定义非线性ENSO数据分析

    如果你设置了适合度选项,然后更改其他适合度设置,应用程序会记住你对下限、上限和起点的选择(如果可能的话)。对于自定义方程,曲线Fitter应用程序总是记住用户的值。然而,对于许多库模型,如果您更改了适合设置,那么应用程序将自动计算起始点或下限的新的最佳值。

您可以保存您的自定义方程作为您保存的曲线Fitter应用程序会话的一部分。

函数可以执行多次,包括在拟合期间和拟合前的预处理期间。请注意,如果您使用的函数有副作用,例如将数据写入文件,或将诊断信息显示到命令窗口,那么这可能会很耗时。

有关示例,请参见:

在曲线拟合器App中拟合文件定义的曲线

这个例子展示了如何在Curve Fitter应用程序中提供一个函数或脚本名称作为拟合模型。在文件中定义一个函数并使用它来拟合曲线。

  1. 在MATLAB文件中定义一个函数。

    函数y = piecewiseLine(x,a,b,c,d,k)分段线:由两段组成的线%不是连续的。Y = 0(大小(x));这个例子包含一个for循环和if语句%纯粹是为了举例。I = 1:长度如果X (i) < k y(i) = a + b.* X (i);其他的Y (i) = c + d.* x(i);结束结束结束

    将文件保存在MATLAB路径下。

  2. 定义一些数据,并打开曲线Fitter应用程序。

    X = [0.81;0.91;0.13;0.91;0.63;0.098;...0.96; 0.96; 0.16; 0.97; 0.96);Y = [0.17;0.12;0.16;0.0035;0.37;0.082;...0.15; -0.046; 0.17; -0.091; -0.071);curveFitter
  3. 在“曲线拟合器”应用程序中曲线更健康选项卡,在数据部分中,点击选择数据.在“选择拟合数据”对话框中,选择x而且yX数据而且Y数据分别列出。输入分段函数作为合适的名字。

  4. 用你的piecewiseLine函数在曲线拟合器应用程序曲线更健康选项卡,在适合类型部分,单击箭头打开图库。在合适的图库中,单击自定义公式自定义组。在合适的选项窗格中,在自定义方程文本框中输入函数表达式。函数取x拟合的数据和一些参数。

    piecewiseLine (x, a, b, c, d, k)

    曲线拟合器应用程序创建一个适合使用你的功能。

自定义方程使用分段线函数

提示

如果要在命令行中使用相同的函数进行拟合,请使用相同的表达式作为输入fittype,然后使用fittype作为一个输入适合

Ft = fittype(“piecewiseLine (x, a, b, c, d, k)”);F =拟合(x,y,ft)
有关更多示例,请参见适合函数。

在命令行中选择自定义方程式

为了适合定制模型:

  • 类提供自定义模型适合fitType输入参数。您可以使用MATLAB表达式(包括任何.m文件)、线性模型项的单元格数组或字符串数组或匿名函数。

  • 创建一个fittype对象的fittype方法的输入参数适合函数。

的输入,并使用定义威布尔模型的自定义方程适合功能:

时间= [0.1;0.1;0.3;0.3;1.3;1.7;2.1;2.6;3.9;3.9;...5.1;5.6;6.2;6.4;7.7;8.1;8.2;8.9;9.0;9.5;...9.6;10.2;10.3;10.8;11.2;11.2;11.2;11.7;12.1;12.3;...12.3;13.1;13.2;13.4;13.7;14.0;14.3;15.4;16.1;16.1;...16.4;16.4;16.7;16.7;17.5;17.6;18.1;18.5;19.3;19.7;]; conc = [0.01; 0.08; 0.13; 0.16; 0.55; 0.90; 1.11; 1.62; 1.79; 1.59;...1.83;1.68;2.09;2.17;2.66;2.08;2.26;1.65;1.70;2.39;...2.08;2.02;1.65;1.96;1.91;1.30;1.62;1.57;1.32;1.56;...1.36;1.05;1.29;1.32;1.20;1.10;0.88;0.63;0.69;0.69;...0.49;0.53;0.42;0.48;0.41;0.27;0.36;0.33;0.17;0.20;]; f = fit(time,conc,“c * a * b * x ^ (b - 1) * exp (a * x ^ b)”“曾经繁荣”,[0.01 2 5]) plot(f,time,conc)

来定义自定义模型fittype,使用以下表格:

F = fittype(expr
哪个构造自定义模型fittype对象为包含在字符向量、字符串标量、单元格数组、字符串数组或匿名函数中的MATLAB表达式expr

看到fittype详情请参阅:

  • 指定因变量和自变量、问题参数和使用的系数fittype

  • 指定单元格数组或术语字符串数组,以便对自定义方程使用线性拟合算法。如果expr是字符串或匿名函数,则工具箱使用非线性拟合算法。

    有关线性拟合的详细信息,请参见在命令行中选择线性拟合

  • 线性和非线性自定义模型的例子。

有关详细示例,请参见自定义非线性普查拟合

Baidu
map