自定义模型
自定义模型与库模型
如果“曲线拟合工具箱™”库不包含所需的参数方程,则可以创建自己的自定义方程。然而,库模型为快速收敛提供了最好的机会。这是因为:
对于大多数库模型,工具箱计算最佳默认系数起点。对于自定义模型,工具箱在区间[0,1]上选择随机的默认起始点。您需要为定制模型找到合适的起点。
库模型使用解析雅可比矩阵。定制模型使用有限差分。
线性与非线性拟合
您可以使用自定义方程拟合类型创建自定义通用方程。一般模型是(也许是非线性的)项的非线性组合。它们由参数中可能是非线性的方程定义。自定义方程拟合使用非线性最小二乘拟合程序。
您可以使用自定义方程拟合类型定义自定义线性方程,不过非线性拟合效率较低,通常比线性最小二乘拟合慢。
如果你不知道你的方程是否可以表示为一组线性函数,那么选择自定义公式.您可能需要寻找合适的起点。
如果需要自定义方程的线性最小二乘拟合,请选择线性拟合而是模型类型。看到自定义线性拟合.
交互式选择自定义方程拟合
在“曲线拟合器”应用程序中曲线更健康选项卡,在适合类型部分,单击箭头打开图库。在合适的图库中,单击自定义公式在自定义组。
在合适的选项窗格中,使用自定义方程拟合来定义自己的方程。单击时,会出现一个自定义方程示例自定义公式,曲线数据如图所示。
如果有曲面数据,则示例自定义方程同时使用这两种数据x
而且y
.
你可以编辑
x
,y
,z
到任何有效变量名。在下面的框中,编辑示例以定义您自己的自定义方程。您可以输入任何有效的MATLAB®用变量名表示的表达式。您可以指定函数或脚本名称(请参阅在曲线拟合器App中拟合文件定义的曲线).
点击高级选项如果你想指定起点或边界。缺省情况下,起始值在间隔[0,1]上随机选择,并且不受约束。您可能需要搜索合适的起始点和边界。有关示例,请参见自定义非线性ENSO数据分析.
如果你设置了适合度选项,然后更改其他适合度设置,应用程序会记住你对下限、上限和起点的选择(如果可能的话)。对于自定义方程,曲线Fitter应用程序总是记住用户的值。然而,对于许多库模型,如果您更改了适合设置,那么应用程序将自动计算起始点或下限的新的最佳值。
您可以保存您的自定义方程作为您保存的曲线Fitter应用程序会话的一部分。
函数可以执行多次,包括在拟合期间和拟合前的预处理期间。请注意,如果您使用的函数有副作用,例如将数据写入文件,或将诊断信息显示到命令窗口,那么这可能会很耗时。
有关示例,请参见:
在曲线拟合器App中拟合文件定义的曲线
这个例子展示了如何在Curve Fitter应用程序中提供一个函数或脚本名称作为拟合模型。在文件中定义一个函数并使用它来拟合曲线。
在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路径下。
定义一些数据,并打开曲线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
在“曲线拟合器”应用程序中曲线更健康选项卡,在数据部分中,点击选择数据.在“选择拟合数据”对话框中,选择
x
而且y
在X数据而且Y数据分别列出。输入分段函数
作为合适的名字。用你的
piecewiseLine
函数在曲线拟合器应用程序曲线更健康选项卡,在适合类型部分,单击箭头打开图库。在合适的图库中,单击自定义公式在自定义组。在合适的选项窗格中,在自定义方程文本框中输入函数表达式。函数取x
拟合的数据和一些参数。piecewiseLine (x, a, b, c, d, k)
曲线拟合器应用程序创建一个适合使用你的功能。
提示
如果要在命令行中使用相同的函数进行拟合,请使用相同的表达式作为输入fittype
,然后使用fittype
作为一个输入适合
:
Ft = fittype(“piecewiseLine (x, a, b, c, d, k)”);F =拟合(x,y,ft)
适合
函数。
在命令行中选择自定义方程式
为了适合定制模型:
的输入,并使用定义威布尔模型的自定义方程适合
功能:
时间= [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
有关线性拟合的详细信息,请参见在命令行中选择线性拟合.
线性和非线性自定义模型的例子。
有关详细示例,请参见自定义非线性普查拟合.