fittype
曲线和曲面的拟合类型
语法
描述
创建aFittype
= fittype (libraryModelName
)fittype
对象aFittype
指定的模型libraryModelName
.
中表达式指定的项为自定义线性模型创建适合类型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)
您可以指定任何MATLAB命令,因此可以指定任何.m
文件。
创建自定义线性模型
若要使用线性拟合算法,请指定术语的单元格数组。
确定需要输入的线性模型项fittype
:A *x + b* sinx + c
.模型是线性的一个
,b
而且c
.它有三项x
,sin (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”)举行从
输入参数
libraryModelName
- - - - - -要适合的库模型
特征向量|字符串标量
标准库模型,指定为字符向量或字符串标量。下表显示了一些常见的例子。
库模型名称 |
描述 |
---|---|
|
线性多项式曲线 |
|
线性多项式表面 |
|
二次多项式曲线 |
|
分段线性插值 |
|
分段立方插值 |
|
平滑样条(曲线) |
|
局部线性回归(曲面) |
有关库模型名称的列表,请参见模型名称和方程.
例子:“poly2”
数据类型:字符
|字符串
表达式
- - - - - -模型以适应
特征向量|字符串标量
模型以拟合,指定为字符向量或字符串标量。您可以指定任何MATLAB命令,因此可以指定任何.m
文件。看到拟合由文件定义的曲线.
数据类型:字符
|字符串
linearModelTerms
- - - - - -模型以适应
字符向量的单元格数组|字符串数组
模型拟合,指定为字符向量的单元格数组或字符串数组。通过字符向量或字符串标量中的表达式指定模型项。不要在表达式中包含系数。看到线性模型方面.
数据类型:细胞
anonymousFunction
- - - - - -模型以适应
匿名函数
模型拟合,指定为匿名函数。有关详细信息,请参见匿名函数的输入顺序.
数据类型:字符
名称-值参数
指定可选参数对为Name1 = Value1,…,以=家
,在那里的名字
参数名称和价值
对应的值。名-值参数必须出现在其他参数之后,但对的顺序并不重要。
在R2021a之前,名称和值之间用逗号隔开,并括起来的名字
在报价。
例子:“系数”,{a1, a2的}
系数
- - - - - -系数的名字
特征向量|字符串标量|字符向量的单元格数组|字符串数组
系数名,指定为逗号分隔的对,由“系数”
以及字符向量、字符串标量、字符向量的单元格数组或字符串数组。可以使用多字符符号名。你不能使用这些名称:我
,j
,π
,正
,南
,每股收益
.
数据类型:字符
|字符串
|细胞
依赖
- - - - - -因变量(响应)名称
y
(默认)|特征向量|字符串标量
因变量(响应)名,指定为逗号分隔的对,由“依赖”
和字符向量或字符串标量。如果不指定因变量,函数假设y
是因变量。
数据类型:字符
|字符串
独立的
- - - - - -独立(响应)变量名
x
(默认)|特征向量|字符串标量|字符向量的单元格数组|字符串数组
独立的(响应)变量名,指定为逗号分隔的对,由“独立”
以及字符向量、字符串标量、字符向量的单元格数组或字符串数组。如果不指定自变量,函数假设x
是自变量。
数据类型:字符
|字符串
|细胞
选项
- - - - - -合适的选项
fitoptions
Fit选项,指定为逗号分隔的对,由“选项”
还有一个名字fitoptions
对象。
问题
- - - - - -依赖于问题的(固定的)参数名
特征向量|字符串标量|单元格数组或字符向量|字符串数组
依赖于问题的(固定的)参数名,指定为逗号分隔的对,由“问题”
以及字符向量,字符串标量,字符向量的单元格数组,或每个问题相关常量只有一个元素的字符串数组。
数据类型:字符
|字符串
|细胞
输出参数
aFittype
-适合的模型
fittype
对象
模型拟合,返回为fittype
.一个fittype
封装描述模型的信息。要想匹配,你需要数据,一个fittype
和(可选)fitoptions
还有一个排他规则。你可以使用fittype
的输入适合
函数。
更多关于
因变量和自变量
如何判断哪些变量是因变量,哪些是自变量?
为了确定因变量和自变量及系数,考虑以下等式:
.
y是因变量。
x是自变量。
一个,b,c的系数。
的“独立”
变量是你控制的东西。的“依赖”
变量是你测量的东西,也就是说,它取决于自变量。的“系数”
是拟合算法估计的参数。
例如,如果你有人口普查数据,那么年份就是自变量,因为它不依赖于任何东西。人口是因变量,因为它的值取决于进行人口普查的年份。如果像增长率这样的参数是模型的一部分,所以拟合算法估计它,那么该参数是“系数”
.
的fittype
函数通过搜索适合类型表达式输入中的变量名来确定输入参数。fittype
假设x
是自变量,y
为因变量,其他变量均为模型系数。x
如果不存在变量,则使用。
匿名函数的输入顺序
如果fit类型表达式输入是匿名函数,那么输入的顺序必须是正确的。输入顺序启用fittype
函数来确定哪些输入是要估计的系数、问题相关的参数和自变量。
匿名函数的输入参数的顺序必须是:
FCN = @(系数,问题参数,x,y)表达式
y
是可选的。最后一个参数,x
而且y
,表示自变量:仅x
曲线,但x
而且y
表面。如果你不想用x
和/或y
方法指定独立变量的名称“独立”
参数名称-值对。但是,无论您选择了多少个名称,这些参数必须是匿名函数的最后一个参数。
函数使得将其他数据传递到fittype
而且适合
功能。
使用匿名函数和变量值(
c
)。c = 1;G = fittype(@(a, b, x) a*x。^ 2 + b * x + c)
的
fittype
函数可以在创建适合类型时在工作空间中使用变量值。要从工作区传入新数据,请重新创建适合类型,例如,c = 5更改c的值。G = fittype(@(a, b, x) a*x。^ 2 + b * x + c)
这里的值
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 +...
term1
,term2
等,使用单元格数组或字符串数组,其中每个项(不带系数)在单元格或元素中指定expr
,如下所示:LinearModelTerms = {“term1”,“term2”,“term3”,...}
例如,模型
A *x + b* sinx + c
一个
,b
,c
.它有三项x
,sin (x)
而且1
(因为c=c*1)因此expr
是:LinearModelTerms = {“x”,“sin (x)”,' 1 '}
在曲线Fitter应用程序中,选择a线性拟合适合的自定义集团在适合类型部分。
算法
如果适合类型表达式输入是字符向量、字符串标量或匿名函数,则工具箱使用非线性拟合算法将模型与数据拟合。
如果适合类型表达式输入是单元格数组或术语字符串数组,则工具箱使用线性拟合算法将模型与数据拟合。
版本历史
之前介绍过的R2006a
MATLAB命令
你点击了一个对应于这个MATLAB命令的链接:
在MATLAB命令窗口中输入命令来运行该命令。Web浏览器不支持MATLAB命令。
您也可以从以下列表中选择网站:
如何获得最佳的网站性能
选择中国网站(中文或英文)以获得最佳的网站表现。其他MathWorks国家网站没有针对从您的位置访问进行优化。