MATLAB fit函数翻译
fit
将曲线或曲面拟合成数据
句法
fitobject = fit(x,y,fitType)
fitobject = fit([x,y],z,fitType)
fitobject = fit(x,y,fitType,fitOptions)
fitobject = fit(x,y,fitType,Name,Value)
[fitobject,gof] = fit(x,y,fitType)
[fitobject,gof,output] = fit(x,y,fitType)
描述
使用库模型使用一个或多个对参数指定的附加选项来创建数据拟合。使用以显示可用的属性名称和默认值特定库模型。fitobject
= fit(x
,y
,fitType
,Name,Value
)fitType
Name,Value
fitoptions
例子
拟合二次曲线
加载一些数据,适合于变量二次曲线cdate
和pop
,并绘制拟合和数据。
负荷普查 ; f = fit(cdate,pop,'poly2')
f = 线性模型Poly2: f(x)= p1 * x ^ 2 + p2 * x + p3 系数(95%置信区间): p1 = 0.006541(0.006124,0.006958) p2 = -23.51(-25.09,-21.93) p3 = 2.113e + 04(1.964e + 04,2.226e + 04)
地块(F,CDATE,流行)
有关库模型名称的列表,请参阅fitType
。
拟合多项式曲面
加载一些数据并拟合 2 x
度和3 度的多项式曲面y
。绘制适合度和数据。
load franke sf = fit([x,y],z,'poly23')
线性模型Poly23: sf(x,y)= p00 + p10 * x + p01 * y + p20 * x ^ 2 + p11 * x * y + p02 * y ^ 2 + p21 * x ^ 2 * y + p12 * x * y ^ 2 + p03 * y ^ 3 系数(95%置信区间): p00 = 1.118(0.9149,1.321) p10 = -0.0002941(-0.000502,-8.623e-05) p01 = 1.533(0.7032,2.364) p20 = -1.966e-08(-7.084e-08,3.1552e-08) p11 = 0.0003427(-0.0001009,0.0007863) p02 = -6.951(-8.421,-5.481) p21 = 9.563e-08(6.276e-09,1.85e-07) p12 = -0.0004401(-0.0007082,-0.0001721) p03 = 4.999(4.082,5.917)
情节(SF,[X,Y,Z)
在MATLAB表中使用变量拟合曲面
加载franke
数据并将其转换为MATLAB®表格。
加载坦克 T = table(x,y,z);
将表中的变量指定为函数的输入,并绘制拟合。fit
f = fit([Tx,Ty],Tz,'linearinterp'); plot(f,[Tx,Ty],Tz)
在拟合之前创建适合选项和适合类型
加载和绘制数据,使用和函数创建拟合选项和拟合类型,然后创建并绘制拟合。fittype
fitoptions
加载并绘制数据census.mat
。
加载人口普查 图(cdate,pop,'o')
为自定义非线性模型创建拟合选项对象和拟合类型,其中a和b是系数,n是与问题相关的参数。
fo = fitoptions('Method','NonlinearLeastSquares',... 'Lower',[0,0],... 'Upper',[Inf,max(cdate)],... 'StartPoint',[1 1]); ft = fittype('a *(xb)^ n','problem','n','options',fo);
使用拟合选项和n = 2 的值来拟合数据。
[curve2,gof2] = fit(cdate,pop,ft,'问题',2)
curve2 = 一般型号: curve2(x)= a *(xb)^ n 系数(95%置信区间): a = 0.006092(0.005743,0.006441) b = 1789(1784,1793) 问题参数: n = 2 gof2 = 结构与字段: sse:246.1543 rsquare:0.9980 dfe:19 adjrsquare:0.9979 rmse:3.5994
使用拟合选项和n = 3 的值来拟合数据。
[curve3,gof3] = fit(cdate,pop,ft,'问题',3)
curve3 = 一般型号: curve3(x)= a *(xb)^ n 系数(95%置信区间): a = 1.359e-05(1.245e-05,1.474e-05) b = 1725(1718,1731) 问题参数: n = 3 gof3 = 结构与字段: sse:232.0058 rsquare:0.9981 dfe:19 adjrsquare:0.9980 rmse:3.4944
用数据绘制拟合结果。
持有上 图(CURVE2,'M' ) 绘图(curve3,'c') 传说('数据','n = 2','n = 3') 持有关闭
拟合指定标准化和可靠选项的立方多项式
加载一些数据,并配合和策划了三次多项式具有中心和规模(Normalize
)和强大的安装选项。
负荷普查 ; f = fit(cdate,pop,'poly3','Normalize','on','Robust','Bisquare')
f = 线性模型Poly3: f(x)= p1 * x ^ 3 + p2 * x ^ 2 + p3 * x + p4 其中x由均值1890和标准差62.05归一化 系数(95%置信区间): p1 = -0.4619(-1.895,0.9707) p2 = 25.01(23.79,26.22) p3 = 77.03(74.37,79.7) p4 = 62.81(61.26,64.37)
地块(F,CDATE,流行)
拟合由文件定义的曲线
在文件中定义一个函数并使用它来创建拟合类型并拟合曲线。
定义在MATLAB的功能®文件。
函数 y = piecewiseLine(x,a,b,c,d,k) %PIECEWISELINE由两段 不连续的线组成的线。 y =零(size(x)); %这个例子 纯粹出于例子的目的而 包含了for-loop和if语句。对于 i = 1:长度(x) 如果 x(i)<k, y(i)= a + b。* x(i); 其他 y(i)= c + d。* x(i); 结束 结束 结束
保存文件。
定义了一些数据,创建一个适合类型指定功能piecewiseLine
,创建一个配合使用的配合型ft
,并绘制结果。
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]; ft = fittype('piecewiseLine(x,a,b,c,d,k)') f = fit(x,y,ft,'StartPoint',[ 1,0,1,0,0.5 ]) plot(f,x,y)
从适合度中排除积分
加载一些数据并拟合指定要排除的点的自定义方程式。绘制结果。
加载数据并定义一个自定义方程和一些起点。
[x,y] =钛; gaussEqn = 'a * exp( - ((xb)/ c)^ 2)+ d'
gaussEqn = 'A * EXP( - ((XB)/ C)^ 2)+ d'
startPoints = [1.5 900 10 0.6]
startPoints = 1×4 1.5000 900.0000 10.0000 0.6000
使用自定义公式和起点创建两个拟合,并使用索引向量和表达式定义两组不同的排除点。用于Exclude
从您的合体中删除异常值。
f1 = fit(x',y',gaussEqn,'Start',startPoints,'Exclude',[1 10 25])
f1 = 一般型号: f1(x)= a * exp( - ((xb)/ c)^ 2)+ d 系数(95%置信区间): a = 1.493(1.432,1.554) b = 897.4(896.5,898.3) c = 27.9(26.55,29.25) d = 0.6519(0.6367,0.6672)
f2 = fit(x',y',gaussEqn,'Start',startPoints,'Exclude',x <800)
f2 = 一般型号: f2(x)= a * exp( - ((xb)/ c)^ 2)+ d 系数(95%置信区间): a = 1.494(1.41,1.578) b = 897.4(896.2,898.7) c = 28.15(26.22,30.09) d = 0.6466(0.6169,0.66764)
绘制两个适合。
图(F1,X,Y) 标题(' 符合排除的数据点1,10和25')
数字 情节(F2,X,Y) 标题(“ 拟合的数据点中排除,使得x <800”)
排除点和绘制适合显示排除的数据
您可以将排除的点定义为变量,然后将它们作为输入提供给拟合函数。以下步骤重新创建前面示例中的拟合,并允许您绘制排除点以及数据和拟合。
加载数据并定义一个自定义方程和一些起点。
[x,y] =钛; gaussEqn = 'a * exp( - ((xb)/ c)^ 2)+ d'
gaussEqn = 'A * EXP( - ((XB)/ C)^ 2)+ d'
startPoints = [1.5 900 10 0.6]
startPoints = 1×4 1.5000 900.0000 10.0000 0.6000
使用索引向量和表达式定义两组要排除的点。
exclude1 = [1 10 25]; exclude2 = x <800;
使用自定义方程式,起点和两个不同的排除点创建两个拟合。
f1 = fit(x',y',gaussEqn,'Start',startPoints,'Exclude',exclude1); f2 = fit(x',y',gaussEqn,'Start',startPoints,'Exclude',exclude2);
绘图都适合并突出显示排除的数据。
图(F1,X,Y,exclude1) 标题(' 符合排除的数据点1,10和25')
数字; 情节(F2,X,Y,exclude2) 标题(“ 拟合的数据点中排除,使得x <800”)
对于排除点的曲面拟合示例,加载一些曲面数据并创建和绘制指定排除数据的拟合。
加载franke f1 = fit([xy],z,'poly23','Exclude',[1 10 25]); f2 = fit([xy],z,'poly23','Exclude',z> 1); 数字 plot(f1,[xy],z,'Exclude',[1 10 25]); 标题(' 符合排除的数据点1,10和25')
数字 plot(f2,[xy],z,'Exclude',z> 1); 标题(“ 拟合的数据点中排除,使得Z> 1”)
拟合平滑样条曲线并返回适合度信息
加载一些数据,并适合通过变量平滑样条曲线month
和pressure
,并返回优度拟合信息和输出结构。绘制数据的拟合和残差。
负载enso ; [曲线,善良,输出] = 适合(月,压力,'smoothingspline'); 图(曲线,月,压力); xlabel('月'); ylabel('压力');
根据x-data(month
)绘制残差。
绘图(曲线,月份,压力,'残差') xlabel('月') ylabel('残余')
使用output
结构中的数据将残差与y数据(pressure
)进行比较。
情节(压力,输出个体,'。') xlabel('压力') ylabel('残余')
拟合单项指数
以指数趋势生成数据,然后使用指数模型的曲线拟合库(单项指数)中的第一个公式拟合数据。绘制结果。
x =(0:0.2:5)'; y = 2 * exp(-0.2 * x)+ 0.5 * randn(size(x)); f = fit(x,y,'exp1'); 情节(F,X,Y)
使用匿名函数拟合自定义模型
您可以使用匿名函数来更轻松地将其他数据传递到函数中。fit
在定义匿名函数之前加载数据并设置Emax
为1
:
data = importdata('OpioidHypnoticSynergy.txt'); Propofol = data.data(:,1); Remifentanil = data.data(:,2); Algometry = data.data(:,3); Emax = 1;
将模型方程定义为匿名函数:
效应= @(IC50A,IC50B,α,n,x,y)... Emax *(x / IC50A + y / IC50B +α*(x / IC50A)...。 *(y / IC50B))。 ((x / IC50A + y / IC50B + ... α*(x / IC50A)*(y / IC50B))。^ n + 1);
使用匿名函数Effect
作为函数的输入,并绘制结果:fit
AlgometryEffect = fit([Propofol,Remifentanil],Algometry,Effect,... 'StartPoint ',[2,10,1,0.8 ],... 'Lower',[-Inf,-Inf,-5,-Inf ],... '鲁棒','LAR') 绘图(AlgometryEffect,[Propofol,瑞芬太尼],Algometry)
有关使用匿名函数和其他自定义模型进行拟合的更多示例,请参阅该fittype
函数。
查找系数顺序以设置起点和界限
对于属性Upper
,Lower
和StartPoint
,您需要查找系数条目的顺序。
创建一个合适的类型。
ft = fittype('b * x ^ 2 + c * x + a');
使用该coeffnames
函数获取系数名称和顺序。
coeffnames(英尺)
ans = 3x1单元阵列 {'一个'} { 'B'} {'C'}
请注意,这ft
与用于创建的表达式中系数的顺序不同fittype
。
加载数据,创建一个拟合并设置起点。
负载恩索 配合(月,压力,英尺,'StartPoint可以',[1,3,5])
ans = 一般型号: ans(x)= b * x ^ 2 + c * x + a 系数(95%置信区间): a = 10.94(9.362,12.52) b = 0.0001677(-7.985e-05,0.0004153) c = -0.0224(-0.06559,0.02079)
这就赋予初始值的系数,如下所示:a = 1
,b = 3
,c = 5
。
或者,您可以得到拟合选项并设置起点和下限,然后使用新选项进行重新整理。
options = fitoptions(ft)
选项= 正常化:'关闭' 排除:[] 重量:[] 方法:'NonlinearLeastSquares' 强健:'关闭' StartPoint:[1x0双倍] 下:[1x0双] 鞋面:[1x0双] 算法:'Trust-Region' DiffMinChange:1.0000e-08 DiffMaxChange:0.1000 显示:'通知' MaxFunEvals:600 最大:400 TolFun:1.0000e-06 TolX:1.0000e-06
options.StartPoint = [10 1 3]; options.Lower = [0 -Inf 0]; 适合(月,压力,英尺,选项)
ans = 一般型号: ans(x)= b * x ^ 2 + c * x + a 系数(95%置信区间): a = 10.23(9.448,11.01) b = 4.335e-05(-1.82e-05,0.0001049) c = 5.523e-12(固定在约束)
输入参数
x
- 适合矩阵的数据
拟合的数据,用一个(曲线拟合)或两个(曲面拟合)列指定为矩阵。您可以使用在MATLAB表中指定变量tablename.varname
。不能包含Inf
或NaN
。只有复杂数据的实际部分才适合使用。
例: x
例: [x,y]
数据类型: double
y
- 适合矢量的数据
适合的数据,指定为具有相同行数的列向量x
。你可以使用一个MATLAB表格来指定一个变量tablename.varname
。不能包含Inf
或NaN
。只有复杂数据的实际部分才适合使用。
使用prepareCurveData
或prepareSurfaceData
如果您的数据不是列向量形式。
数据类型: double
z
- 适合矢量的数据
适合的数据,指定为具有相同行数的列向量x
。你可以使用一个MATLAB表格来指定一个变量tablename.varname
。不能包含Inf
或NaN
。只有复杂数据的实际部分才适合使用。
使用prepareSurfaceData
如果您的数据是不是在列向量形式。例如,如果您有3个矩阵,或者如果您的数据处于网格向量形式,其中length(X) = n, length(Y) = m
和size(Z) = [m,n]
。
数据类型: double
fitType
- 适合字符向量 |的模型类型 字符向量的单元阵列 | 匿名函数 |
fittype
适合的模型类型,指定为库模型名称字符向量,MATLAB表达式,线性模型项的单元阵列,匿名函数或使用fittype
函数构造的模型类型fittype
。您可以使用任何有效的第一个输入fittype
作为输入。fit
有关库模型名称的列表,请参阅模型名称和等式。该表显示了一些常见的例子。
库模型名称 |
描述 |
---|---|
|
线性多项式曲线 |
|
线性多项式曲面 |
|
二次多项式曲线 |
|
分段线性插值 |
|
分段三次插值 |
|
平滑样条曲线(曲线) |
|
局部线性回归(表面) |
到适合的自定义模型,使用MATLAB表达,线性模型项的单元阵列,一个匿名函数,或者创建一个fittype
与该fittype
功能并使用这个作为fitType
参数。有关示例,请参阅使用匿名函数拟合自定义模型。有关线性模型术语的示例,请参阅该函数。fitType
例如: 'poly2'
fitOptions
- 算法选项
fitoptions
使用该fitoptions
函数构造的算法选项。这是指定适合选项的名称/值对参数的替代方法。
名称 - 值对参数
指定可选的逗号分隔Name,Value
参数对。Name
是参数名称并且Value
是相应的值。 Name
必须出现在单引号(' '
)内。您可以按任意顺序指定多个名称和值对参数 Name1,Value1,...,NameN,ValueN
。
'Lower',[0,0],'Upper',[Inf,max(x)],'StartPoint',[1 1]
指定拟合方法,边界和起点。
所有拟合方法的选项
'Normalize'
- 选择集中和缩放数据
'off'
(默认)|'on'
选项居中和缩放数据,指定为逗号分隔的一对组成的'Normalize'
和'on'
或'off'
。
数据类型: char
'Exclude'
- 从拟合表达式中排除的点| 索引向量 | 逻辑向量 | 空
从fit中排除的点,指定为逗号分隔对由以下'Exclude'
之一组成:
描述逻辑向量的表达式,例如
x > 10
。一个整数向量,用于索引要排除的点,例如
[1 10 25]
。所有数据点的逻辑向量,
true
表示异常值,由...创建excludedata
。
数据类型:logical
|double
'problem'
- 要分配给问题相关常量的值
单元格数组 | | 双
要分配给问题相关常量的值,指定为由逗号分隔的对'problem'
和单元阵列,每个问题有一个元素相关常量。有关详情,请参阅fittype
。
数据类型:cell
|double
平滑选项
'SmoothingParam'
- 在范围(0,1)中平滑参数
标量值
平滑参数,指定为由'SmoothingParam'
0和1之间的逗号分隔对组成的标量值。默认值取决于数据集。只有适合的类型是可用的smoothingspline
。
数据类型: double
'Span'
- 在局部回归中使用的数据点的比例
0.25(默认)| 标量值在范围(0,1)
在局部回归中使用的数据点的比例,指定为由逗号分隔的一对'Span'
和由0到1之间的标量值指定的值。只有在拟合类型为lowess
或时才可用loess
。
数据类型: double
线性和非线性最小二乘选项
'Robust'
- 鲁棒线性最小二乘拟合方法
'off'
(默认)| LAR
|Bisquare
稳健的线性最小二乘拟合方法,指定为由'Robust'
以下值之一组成的逗号分隔对:
'LAR'
指定最小绝对剩余方法。'Bisquare'
指定bisquare权重方法。
适合类型Method
为LinearLeastSquares
或 时可用NonlinearLeastSquares
。
数据类型: char
'Lower'
- 拟合系数的下限
[](默认)| 向量
拟合系数的下限,指定为逗号分隔对'Lower'
和矢量。默认值是一个空向量,表示 拟合不受下限限制。如果指定了边界,则矢量长度必须等于系数的数量。使用该coeffnames
函数查找矢量值中系数的条目顺序。有关示例,请参阅查找系数顺序以设置起点和界限。单独的无约束下界可以通过-Inf
。
当Method
是LinearLeastSquares
或时可用NonlinearLeastSquares
。
数据类型: double
'Upper'
- 拟合系数的上界
[](默认)| 向量
拟合系数的上限,指定为由逗号分隔的对'Upper'
和一个向量。默认值是一个空向量,表示 拟合不受上限约束。如果指定了边界,则矢量长度必须等于系数的数量。使用该coeffnames
函数查找矢量值中系数的条目顺序。有关示例,请参阅查找系数顺序以设置起点和界限。个别无约束的上限可以通过+Inf
。
当Method
是LinearLeastSquares
或时可用NonlinearLeastSquares
。
数据类型: logical
非线性最小二乘选项
'StartPoint'
- 系数的初始值
[](默认值)| 向量
系数的初始值,指定为由逗号分隔的对'StartPoint'
和向量。使用该coeffnames
函数查找矢量值中系数的条目顺序。有关示例,请参阅查找系数顺序以设置起点和界限。
如果没有开始点(空向量的默认值)传递给函数,则启发式地确定某些库模型的起点。对于有理和威布尔模型以及所有自定义非线性模型,工具箱从区间(0,1)中随机地均匀选择系数的默认初始值。因此,使用相同数据和模型的多重拟合可能导致不同的拟合系数。为了避免这种情况,请为该值指定对象或矢量值的系数的初始值。fit
fitoptions
StartPoint
可当Method
为NonlinearLeastSquares
。
数据类型: double
'Algorithm'
- 用于拟合程序
'Trust-Region'(默认)|的算法 “文伯格-马夸特”
用于拟合程序的算法,指定为由以及'Algorithm'
和'Levenberg-Marquardt'
或组成的逗号分隔对'Trust-Region'
。
可当Method
为NonlinearLeastSquares
。
数据类型: char
'DiffMaxChange'
- 有限差分梯度的最大系数变化
0.1(默认)
有限差分梯度系数的最大变化,指定为逗号分隔对'DiffMaxChange'
和标量。
可当Method
为NonlinearLeastSquares
。
数据类型: double
'DiffMinChange'
- 有限差分梯度系数的最小变化
10 -8(默认)
有限差分梯度系数的最小变化,指定为逗号分隔对'DiffMinChange'
和标量。
可当Method
为NonlinearLeastSquares
。
数据类型: double
'Display'
- 在命令窗口中显示选项
'notify'
(默认)| 'final'
| 'iter'
|'off'
在命令窗口中显示选项,指定为由'Display'
以下选项之一组成的逗号分隔对:
'notify'
仅在拟合不收敛时显示输出。'final'
只显示最终输出。'iter'
在每次迭代中显示输出。'off'
不显示输出。
可当Method
为NonlinearLeastSquares
。
数据类型: char
'MaxFunEvals'
- 允许模型的最大评估数量
600
(默认)
允许模型的最大评估数,指定为逗号分隔对'MaxFunEvals'
和标量。
可当Method
为NonlinearLeastSquares
。
数据类型: double
'MaxIter'
- 适合允许的最大迭代次数
400
(默认)
允许拟合的最大迭代次数,指定为逗号分隔对'MaxIter'
和标量。
可当Method
为NonlinearLeastSquares
。
数据类型: double
'TolFun'
- 型号值10 -6的终端容差(默认)
模型值的终止容差,指定为由逗号分隔的对'TolFun'
和标量组成的逗号。
可当Method
为NonlinearLeastSquares
。
数据类型: double
'TolX'
- 系数值的终端容差
10 -6(默认)
系数值的终止容差,指定为由逗号分隔的对'TolX'
和标量组成的逗号。
可当Method
为NonlinearLeastSquares
。
数据类型: double
输出参数
gof
- 适合度的统计
gof
结构|
善-OF- 适合的统计,返回的gof
结构,包括在此表中的字段。
领域 |
值 |
---|---|
|
由于错误导致的平方和 |
|
R平方(确定系数) |
|
错误的*度 |
|
*度调整的决定系数 |
|
均方根误差(标准误差) |
output
- 拟合算法信息
output
结构
拟合算法信息,作为output
包含与拟合算法相关的信息的结构返回。
字段取决于算法。例如,output
非线性最小二乘算法的结构包括此表中显示的字段。
领域 |
值 |
---|---|
|
观察次数(响应值) |
|
适合的未知参数(系数)的数量 |
|
残余矢量 |
|
雅可比矩阵 |
|
描述算法的退出条件。积极的标志表明在公差范围内收敛。零标志表示已超过功能评估或迭代的最大数量。负标志表示算法没有收敛到解决方案。 |
|
迭代次数 |
|
功能评估的数量 |
|
一阶最优性的测量(梯度分量的绝对最大值) |
|
使用拟合算法 |
相关推荐
- MATLAB fit函数翻译
- MATLAB fit函数翻译
- MATLAB中的wavedec、wrcoef函数简析
- matlab中plot()函数用法大全
- MATLAB的数组查找函数find以及元胞数组
- MATLAB的数组查找函数find以及元胞数组
- Matlab 曲线拟合之 polyfit 、polyval、poly2str 函数
- 使用 MatLab 绘制 ENVI 中部分自带传感器的光谱相应函数
- matlab自带SVM算法例子(附函数详解)
- matlab中,常见函数调用(eps ,union,dot,exp,eye,reshape,magic,setdiff,sort,round)
- MATLAB fit函数翻译
- 遥感图像波段运算:分段公式叶面积指数计算