fittype

曲线和曲面拟合的拟合类型

描述

例子

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

例子

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

例子

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

例子

aFittype= fittype (linearModelTerms中字符向量表达式的单元格数组指定的术语为自定义线性模型创建适合类型linearModelTerms

例子

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

例子

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

例子

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

例子

全部折叠

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

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

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

构造适合库模型的类型rat33(分子和分母的三次有理模型)。

f = fittype (“rat33”
一般模型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

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

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

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

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

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

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

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

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

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

为自定义非线性模型构造适合类型,并指定n作为一个与问题相关的参数和u作为自变量。

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

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

g = fittype (“* ^ 2 + b *时间+ c”“独立”“时间”“依赖”“高度”
一般模型: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 =一般模型:myfittype(a,b,x) = a + b*log(x)
myfit =适合(x, y, myfittype)
警告:起始点未提供,选择随机起始点。
myfit =一般模型:myfit(x) = a + b*log(x)
情节(myfit, x, y)

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

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

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

函数y = piecewiseLine (x, a, b, c, d, k)PIECEWISELINE由两件组成的线那不是连续的。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])

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

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

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

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

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

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

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

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

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

a*x, x, x, x, x, x, x, x, x, x, x, 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”);

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

a,b,c,d,x,y。^ 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形曲线。Xi = linspace(0,1, 241);Plot (xi, interp1(xs, ys, xi,“pchip”),“线宽”2) hold情节(x, y,“o”“MarkerFaceColor”“r”)举行标题s曲线

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

if (x = x, x, x, x, x, x, x, x, 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'

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

加载一些数据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 =拟合(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);创建一个有问题参数的fittype。a*x.^2+b*x+c,“问题”“c”%检查系数。注意c不是一个系数。coeffnames (g)%检查参数。注意c是一个参数。argnames (g)%调用fit并指定c的值。F1 =拟合(xdata, ydata, g,)“问题”0,曾经繁荣的, [1,2])%注意:在调用中指定合适的起始点%避免关于随机起点的警告消息%并确保结果的可重复性。再次调用fit并指定一个不同的值c,去换一套新的衣服。F2 =拟合(xdata, ydata, g,)“问题”, 1“开始”, [1,2])%的阴谋的结果。观察指定的c常数不合身。Plot (f1, xdata, ydata)持有情节(f2,“b”)举行

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

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

输入参数

全部折叠

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

库模型名称

描述

“poly1”

线性多项式曲线

“poly11”

线性多项式表面

“poly2”

二次多项式曲线

“linearinterp”

分段线性插值

“cubicinterp”

分段立方插值

“smoothingspline”

平滑样条(曲线)

“洛斯”

局部线性回归(面)

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

例子:“poly2”

数据类型:字符

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

数据类型:字符

模型拟合,指定为字符向量的单元格数组。通过字符向量中的表达式指定模型术语。这些项的表达式中不包括系数。看到线性模型方面

数据类型:细胞

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

数据类型:字符

名称-值对的观点

指定可选的逗号分隔的对名称,值参数。的名字参数名和价值为对应值。的名字必须出现在引号内。可以以任意顺序指定多个名称和值对参数Name1, Value1,…,的家

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

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

数据类型:字符|细胞

从属(响应)变量名,指定为逗号分隔对,由“依赖”一个字符向量。如果你没有指定因变量,函数假设y为因变量。

数据类型:字符

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

数据类型:字符

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

与问题相关的(固定的)参数名称,指定为逗号分隔对,由“问题”和一个字符向量,或字符向量的单元数组,每个元素与问题相关的常数。

数据类型:字符|细胞

输出参数

全部折叠

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

更多关于

全部折叠

因变量和自变量

我如何决定哪些变量是相关的,哪些是独立的?

为了确定因变量和自变量及系数,考虑下面这个方程:

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

  • y为因变量。

  • x为自变量。

  • 一个b,c的系数。

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

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

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

匿名函数的输入顺序

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

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

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

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

  1. 使用匿名函数和变量值创建适合类型(c)。

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

    c = 5%改变c的值。x *x, x, x, x, x, x, x, x, x, x^ 2 + b * x + c)
  3. 在这里,值c在创建适合类型时是固定的。指定的值c在你打电话的时候适合,您可以使用问题参数。例如,与c = 2然后是一个新的适合c = 3

    a*x.^2+b*x+c,“问题”“c”) f1 =拟合(xdata, ydata, g,)“问题”, 2) f2 =拟合(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*sin(x) + c
是线性的一个b,c.它有三个项xsin (x)1(因为c=c*1expr是:
LinearModelTerms = {“x”“sin (x)”' 1 '

在曲线拟合应用程序中,请参阅线性拟合模型类型。

算法

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

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

另请参阅

应用程序

功能

之前介绍过的R2006a