主要内容

fittype

曲线和曲面的拟合类型

描述

例子

aFittype= fittype (libraryModelName创建fittype对象aFittype指定的模型libraryModelName

aFittype= fittype (表达式为MATLAB指定的模型创建一个适合类型®表达式。

例子

aFittype= fittype (表达式名称,值用一个或多个指定的附加选项构造适合类型名称,值对参数。

例子

aFittype= fittype (linearModelTerms中表达式指定的项为自定义线性模型创建适合类型linearModelTerms

例子

aFittype= fittype (linearModelTerms名称,值用一个或多个指定的附加选项构造适合类型名称,值对参数。

例子

aFittype= fittype (anonymousFunction为指定的模型创建适合类型anonymousFunction

例子

aFittype= fittype (anonymousFunction名称,值用一个或多个指定的附加选项构造适合类型名称,值对参数。

例子

全部折叠

通过指定库模型名称构造适合类型。

构造一个fittype对象的三次多项式库模型。

f = fittype (“poly3”
f =线性模型Poly3: f(p1,p2,p3,p4,x) = p1*x^3 + p2*x^2 + p3*x + p4

为库模型构造一个适合的类型rat33(分子和分母三度的理性模型)。

f = fittype (“rat33”
f =一般模型Rat33: f(p1,p2,p3,p4,q1,q2,q3,x) = (p1*x^3 + p2*x^2 + p3*x + p4) / (x^3 + q1*x^2 + q2*x + q3)

有关库模型名称的列表,请参见libraryModelName

为自定义非线性模型构造拟合类型,指定问题相关的参数和自变量。

为自定义非线性模型构造拟合类型,指定n作为一个依赖于问题的参数u作为自变量。

g = fittype (“* u + b * exp (n * u)”...“问题”“n”...“独立”“u”
g =一般模型:g(a,b,n,u) = a*u+b*exp(n*u)

为自定义非线性模型构造拟合类型,指定时间作为自变量。

g = fittype (“* ^ 2 + b *时间+ c”“独立”“时间”“依赖”“高度”
g =一般模型:g(a,b,c,time) = a*time^2+b*time+c

为一些数据的对数拟合构造一个拟合类型,使用拟合类型创建一个拟合,并绘制拟合图。

x = linspace (1100);Y = 5 + 7*log(x);myfittype = fittype (“a + b *日志(x)”...“依赖”, {“y”},“独立”, {“x”},...“系数”, {“一个”“b”})
myfittype(a,b,x) = a + b*log(x)
myfit =适合(x, y, myfittype)
警告:没有提供起始点,选择随机起始点。
系数(95%置信限):a = 5 (5,5) b = 7 (7,7)
情节(myfit, x, y)

图中包含一个axes对象。坐标轴对象包含两个line类型的对象。这些对象表示数据,拟合曲线。

您可以指定任何MATLAB命令,因此可以指定任何.m文件。

若要使用线性拟合算法,请指定术语的单元格数组。

确定需要输入的线性模型项fittypeA *x + b* sinx + c.模型是线性的一个b而且c.它有三项xsin (x)而且1(因为c = c * 1).要指定这个模型,可以使用下面的单元格数组中的术语:LinearModelTerms ={“x”,“sin (x)”,' 1 '}

使用线性模型项的单元格数组作为输入fittype

英国《金融时报》= fittype ({“x”“sin (x)”' 1 '})
ft =线性模型:ft(a,b,c,x) = a*x + b*sin(x) + c

创建适合类型的线性模型a * cos (x) + b

ft2 = fittype ({“cos (x)”' 1 '})
ft2 =线性模型:ft2(a,b,x) = a*cos(x) + b

再次创建适合类型并指定系数名称。

发生= fittype ({“cos (x)”' 1 '},“系数”, {“a1”“a2”})
ft3 =线性模型:ft3(a1,a2,x) = a1*cos(x) + a2

在文件中定义一个函数,并使用它来创建适合类型并适合曲线。

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

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

保存文件。

定义一些数据,创建指定函数的适合类型piecewiseLine,使用fit类型创建一个fit英国《金融时报》,并绘制出结果。

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);英国《金融时报》= fittype ('piecewiseLine(x, a, b, c, d, k)'f = fit(x, y, ft,)曾经繁荣的, [1,0, 1,0, 0.5]) plot(f, x, y)

使用匿名函数创建适合类型。

G = fittype(@(a, b, c, x) a*x。^ 2 + b * x + c)

使用匿名函数创建适合类型,并指定独立和依赖的参数。

g = fittype (@ (a, b, c, d, x, y) * x ^ 2 + b * x + c * exp (...——(y-d)。^ 2),“独立”, {“x”“y”},...“依赖”“z”);

使用匿名函数为曲面创建适合类型,并指定独立参数和依赖参数,以及稍后在调用时指定的问题参数适合

G = fittype(@(a,b,c,d,x,y) a*x。^ 2 + b * x + c * exp (- (y-d)。^ 2),...“问题”, {“c”' d '},“独立”, {“x”“y”},...“依赖”“z”);

使用匿名函数将工作区数据传递到fittype而且适合功能。

创建并绘制一条s型曲线。在后面的步骤中,您将拉伸和移动这条曲线以适应某些数据。

%断点。x =(0:0.1:1)。';%曲线在断点处的高度。(y = 0;0;0.04;0.1;0.2;0.5;0.8;0.9;0.96;1; 1];绘制s型曲线。Plot (xi, interp1(xs, ys, xi,)“pchip”),“线宽”2) hold住情节(x, y,“o”“MarkerFaceColor”“r”)举行标题s曲线

使用匿名函数创建适合类型,从工作空间中获取曲线断点的值(xs)和在断点处的曲线高度(y).系数是b(基地)和h(高度)。

Ft = fittype(@(b, h, x) interp1(xs, b+h*ys, x,)“pchip”) )

画出fittype指定基系数的例子b = 1.1和高度h = -0.8

图(xi, ft(1.1, -0.8, xi),“线宽”2)标题'Fittype with b=1.1 and h=-0.8'

使用fit类型加载和拟合一些数据英国《金融时报》使用工作空间值创建。

%加载一些数据xdata = [0.012; 0.054; 0.13; 0.16; 0.31; 0.34; 0.47; 0.53; 0.53;...0.57; 0.78; 0.79; 0.93);ydata = [0.78; 0.87; 1; 1.1; 0.96; 0.88; 0.56; 0.5; 0.5; 0.5; 0.63;...0.62; 0.39);将曲线与数据拟合F = fit(xdata, ydata, ft,)“开始”, [0, 1])%情节适合绘制(f, xdata, ydata)标题“安装s曲线”

这个例子展示了使用带有问题参数的匿名函数和工作区变量值之间的区别。

加载数据,使用带有问题参数的匿名函数为曲线创建适合类型,然后调用适合指定问题参数。

加载一些数据。xdata = [0.098; 0.13; 0.16; 0.28; 0.55; 0.63; 0.81; 0.91; 0.91;...0.96; 0.96; 0.96; 0.97);ydata = [0.52; 0.53; 0.53; 0.48; 0.33; 0.36; 0.39; 0.28; 0.28;...0.21; 0.21; 0.21; 0.2);创建具有问题参数的fit类型。G = fittype(@(a,b,c,x) a*x.^2+b*x+c,“问题”“c”%检查系数。注意c不是系数。coeffnames (g)%检查参数。注意c是一个参数。argnames (g)调用fit并指定c的值。F1 = fit(xdata, ydata, g,)“问题”0,曾经繁荣的, [1, 2])注意:在适合的调用中指定起始点避免关于随机起点的警告消息。%,并确保结果的可重复性。再次调用fit并指定不同的c值,去换件新衣服。F2 = fit(xdata, ydata, g,“问题”, 1“开始”, [1, 2])%的阴谋的结果。观察指定的c常数不太合适。Plot (f1, xdata, ydata)保持情节(f2,“b”)举行

修改前面的示例,使用变量的工作空间值创建相同的匹配,而不是使用问题参数。使用相同的数据,使用具有变量工作空间值的匿名函数为曲线创建适合类型c

从参数列表中删除c。试一试G = fittype(@(a,b,x) a*x。^ 2 + b * x + c)E disp(E .message)结束%观察错误,因为现在c未定义。定义c并创建fittype:c = 0;G1 = fittype(@(a,b,x) a*x。^ 2 + b * x + c)%调用适合(现在不需要指定问题参数)。F1 = fit(xdata, ydata, g1,曾经繁荣的, [1, 2])注意,这个f1与上面的f1相同。若要更改c的值,请重新创建fit类型。c = 1;G2 = fittype(@(a,b,x) a*x。^ 2 + b * x + c)%使用c = 1F2 = fit(xdata, ydata, g2,曾经繁荣的, [1, 2])注意,这个f2与上面的f2相同。%绘制结果Plot (f1, xdata, ydata)保持情节(f2,“b”)举行

输入参数

全部折叠

标准库模型,指定为字符向量或字符串标量。下表显示了一些常见的例子。

库模型名称

描述

“poly1”

线性多项式曲线

“poly11”

线性多项式表面

“poly2”

二次多项式曲线

“linearinterp”

分段线性插值

“cubicinterp”

分段立方插值

“smoothingspline”

平滑样条(曲线)

“洛斯”

局部线性回归(曲面)

有关库模型名称的列表,请参见模型名称和方程

例子:“poly2”

数据类型:字符|字符串

模型以拟合,指定为字符向量或字符串标量。您可以指定任何MATLAB命令,因此可以指定任何.m文件。看到拟合由文件定义的曲线

数据类型:字符|字符串

模型拟合,指定为字符向量的单元格数组或字符串数组。通过字符向量或字符串标量中的表达式指定模型项。不要在表达式中包含系数。看到线性模型方面

数据类型:细胞

模型拟合,指定为匿名函数。有关详细信息,请参见匿名函数的输入顺序

数据类型:字符

名称-值参数

指定可选参数对为Name1 = Value1,…,以=家,在那里的名字参数名称和价值对应的值。名-值参数必须出现在其他参数之后,但对的顺序并不重要。

在R2021a之前,名称和值之间用逗号隔开,并括起来的名字在报价。

例子:“系数”,{a1, a2的}

系数名,指定为逗号分隔的对,由“系数”以及字符向量、字符串标量、字符向量的单元格数组或字符串数组。可以使用多字符符号名。你不能使用这些名称:jπ每股收益

数据类型:字符|字符串|细胞

因变量(响应)名,指定为逗号分隔的对,由“依赖”和字符向量或字符串标量。如果不指定因变量,函数假设y是因变量。

数据类型:字符|字符串

独立的(响应)变量名,指定为逗号分隔的对,由“独立”以及字符向量、字符串标量、字符向量的单元格数组或字符串数组。如果不指定自变量,函数假设x是自变量。

数据类型:字符|字符串|细胞

Fit选项,指定为逗号分隔的对,由“选项”还有一个名字fitoptions对象。

依赖于问题的(固定的)参数名,指定为逗号分隔的对,由“问题”以及字符向量,字符串标量,字符向量的单元格数组,或每个问题相关常量只有一个元素的字符串数组。

数据类型:字符|字符串|细胞

输出参数

全部折叠

模型拟合,返回为fittype.一个fittype封装描述模型的信息。要想匹配,你需要数据,一个fittype和(可选)fitoptions还有一个排他规则。你可以使用fittype的输入适合函数。

更多关于

全部折叠

因变量和自变量

如何判断哪些变量是因变量,哪些是自变量?

为了确定因变量和自变量及系数,考虑以下等式:

y f x 一个 + b x + c x 2

  • y是因变量。

  • x是自变量。

  • 一个b,c的系数。

“独立”变量是你控制的东西。的“依赖”变量是你测量的东西,也就是说,它取决于自变量。的“系数”是拟合算法估计的参数。

例如,如果你有人口普查数据,那么年份就是自变量,因为它不依赖于任何东西。人口是因变量,因为它的值取决于进行人口普查的年份。如果像增长率这样的参数是模型的一部分,所以拟合算法估计它,那么该参数是“系数”

fittype函数通过搜索适合类型表达式输入中的变量名来确定输入参数。fittype假设x是自变量,y为因变量,其他变量均为模型系数。x如果不存在变量,则使用。

匿名函数的输入顺序

如果fit类型表达式输入是匿名函数,那么输入的顺序必须是正确的。输入顺序启用fittype函数来确定哪些输入是要估计的系数、问题相关的参数和自变量。

匿名函数的输入参数的顺序必须是:

FCN = @(系数,问题参数,x,y)表达式
你至少需要一个系数。问题参数和y是可选的。最后一个参数,x而且y,表示自变量:仅x曲线,但x而且y表面。如果你不想用x和/或y方法指定独立变量的名称“独立”参数名称-值对。但是,无论您选择了多少个名称,这些参数必须是匿名函数的最后一个参数。

函数使得将其他数据传递到fittype而且适合功能。

  1. 使用匿名函数和变量值(c)。

    c = 1;G = fittype(@(a, b, x) a*x。^ 2 + b * x + c)
  2. fittype函数可以在创建适合类型时在工作空间中使用变量值。要从工作区传入新数据,请重新创建适合类型,例如,

    c = 5更改c的值。G = fittype(@(a, b, x) a*x。^ 2 + b * x + c)
  3. 这里的值c在创建适合类型时已固定。指定…的值c在你打电话的时候适合,您可以使用问题参数。例如,与…相配c = 2然后再配上新的c = 3

    G = fittype(@(a,b,x,c) a*x.^2+b*x+c,“问题”“c”) f1 = fit(xdata, ydata, g,)“问题”f2 = fit(xdata, ydata, g,)“问题”3)

线性模型方面

如何定义线性模型术语?

若要使用线性拟合算法,请指定linearModelTerms作为单元格数组或术语的字符串数组。例如:

afittype = fittype ({expr1,..., exprn})
通过字符向量中的表达式指定模型项expr2,…,exprn.不要在表达式中包含系数。如果有一个常数项,用' 1 '作为单元格数组中相应的表达式。

指定以下形式的线性模型:

Coeff1 * term1 + coeff2 * term2 + coeff3 * term3 +...
其中没有系数term1term2等,使用单元格数组或字符串数组,其中每个项(不带系数)在单元格或元素中指定expr,如下所示:
LinearModelTerms = {“term1”“term2”“term3”...

例如,模型

A *x + b* sinx + c
是线性的一个b,c.它有三项xsin (x)而且1(因为c=c*1)因此expr是:
LinearModelTerms = {“x”“sin (x)”' 1 '

在曲线Fitter应用程序中,选择a线性拟合适合的自定义集团在适合类型部分。

算法

如果适合类型表达式输入是字符向量、字符串标量或匿名函数,则工具箱使用非线性拟合算法将模型与数据拟合。

如果适合类型表达式输入是单元格数组或术语字符串数组,则工具箱使用线性拟合算法将模型与数据拟合。

版本历史

之前介绍过的R2006a

另请参阅

功能

应用程序

Baidu
map