主要内容

自定义模型

自定义模型与库模型

如果工具箱库不包含所需的参数方程,您可以创建自己的自定义方程。然而,图书馆模式提供了快速融合的最佳机会。这是因为:

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

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

线性与非线性拟合

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

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

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

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

交互式选择自定义方程

在曲线拟合应用程序中,选择自定义公式从“模型类型”列表中。

使用自定义方程式来定义你自己的方程式。当您选择时,将出现一个示例自定义方程自定义公式列表中,如这里显示的曲线数据。

如果有曲面数据,示例自定义公式将同时使用这两种数据xy

  1. 您可以编辑xyz任何有效的变量名。

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

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

    如果您设置拟合选项,然后更改其他拟合设置,则应用程序会记住您对下限、上限和起点的选择(如果可能)。对于自定义方程,曲线拟合应用程序始终记住用户值,但对于许多库模型,如果您更改拟合设置,则应用程序会自动计算起点或下限的新最佳值r边界。

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

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

有关示例,请参见:

拟合曲线拟合应用程序中由文件定义的曲线

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

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

    作用y = piecewiseLine (x, a, b, c, d, k)PIECEWISELINE由两件组成的线那不是连续的。y = 0(大小(x));这个例子包括一个for循环和if语句%纯粹是为了举例。i=1:长度(x)如果x(i)其他的y(i)=c+d*x(i);结束结束结束

    将文件保存在MATLAB路径上。

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

    x=[0.81;0.91;0.13;0.91;0.63;0.098;0.28;0.55;...0.96; 0.96; 0.16; 0.97; 0.96);y = [0.17; 0.12; 0.16; 0.0035; 0.37; 0.082; 0.34; 0.56;...0.15; -0.046; 0.17; -0.091; -0.071);cftool
  3. 在曲线拟合应用程序中,选择xyX数据Y数据名单。

  4. 用你的分段线在曲线拟合应用程序中,选择自定义方程拟合类型,然后在自定义方程文本框中输入函数表达式。该函数取x数据和一些参数进行拟合。

    分段直线(x, a, b, c, d, k)

    曲线拟合应用程序使用您的函数创建拟合。

提示

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

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

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

要适合自定义模型,请执行以下操作之一:

  • 将自定义模型提供给适合功能菲特型输入参数。您可以使用MATLAB表达式(包括任何M文件),线性模型项的单元格数组或字符串数组,或匿名函数。

  • 创建一个菲特型反对菲特型函数用作的输入参数适合函数。

该示例加载一些数据,并使用定义Weibull模型作为输入的自定义方程适合功能:

1.7;2.6;3.9;3.9;3.9;3.9;3.9;3.9;3.9;3.9;3.9;6.9;5.1;5.1;5.1;5.6;6.6;6.2;6.2;6.2;6.1;6.1;6.1;6;6.1;6;6.6;6;6;6.2;6;6;6;6.2;6;6;6;6;6.2;6;6;6.4;6.4;6;6;6.4;6;6;6;6;6.4;6.4;6;6.4;6.4;6;6;6;6.4;6;6.4;6;6;6;6.4;6.4;6;6;6;6;6.4;7;6.4;7;7;7;7;7;6;6(一),18.1,18.5,19.3,19.7,;0.01;0.01;0.01;0.01;0.08;0.08;0.08;0.13;0.13;0.16;0.15;1.62;1.79;1.59;1.58;1.58;0.01;0.01;0.01;0.01;0.01;0.01;0.01;0.01;1.11;1.11;1.62;1.79;1.79;1.79;1.79;1.59;1.59;1.59;1.59;1;1.59;1.59;1.59;1;1;1.58;1.59;1.59;1;1.58;1;1;1.58;1.58;1.58;1.58;1.58;1;1.58;1.58;1.58;1;1;1;1.58;1.58;1.58;1;1.58;1.58 27;0.36;0.33;0.17;0.20;];f=拟合(时间,浓度,'c*a*b*x^(b-1)*exp(-a*x^b)','StartPoint',[0.01,2,5])图(f,时间,浓度)

使用。定义自定义模型菲特型,使用以下形式:

f=fittype(expr
它构造了一个自定义模型菲特型对象的MATLAB表达式包含在字符向量、字符串标量、单元数组、字符串数组或匿名函数中expr

菲特型有关以下内容的详细信息,请参见参考页:

  • 使用指定因变量和自变量、问题参数和系数菲特型

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

    有关线性拟合的更多细节,请参阅在命令行中选择线性拟合

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

有关一步一步的示例,请参见自定义非线性普查拟合