适合
拟合曲线或曲面到数据
语法
描述
例子
二次曲线拟合
加载一些数据,拟合变量的二次曲线cdate
而且流行
,并绘制拟合和数据。
负载人口普查;f =适合(cdate、流行,“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.262 2e+04)
情节(f cdate流行)
有关库模型名称的列表,请参见fitType
.
拟合多项式曲面
加载一些数据,拟合一个2次多项式曲面x
学位是3y
.绘制拟合和数据。
负载因特网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 + p21* 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.152e-08) p11 = 0.0003427 (- 8.0001009, -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)
情节(科幻,x, y, z)
在MATLAB表格中使用变量拟合曲面
加载因特网
数据并将其转换为MATLAB®表。
负载因特网T = table(x,y,z);
属性的输入,指定表中的变量适合
函数,并绘制拟合图。
f = fit;x,T.y],T.z,“linearinterp”);(f, [T];x,T.y], T.z )
在安装前创建安装选项和安装类型
方法加载和绘制数据,创建适合选项和适合类型fittype
而且fitoptions
函数,然后创建并绘制拟合。
加载并绘制数据census.mat
.
负载人口普查情节(cdate、流行,“o”)
为自定义非线性模型创建一个适合选项对象和一个适合类型 ,在那里一个而且b是系数和n是一个与问题相关的参数。
Fo = fitoptions(“方法”,“NonlinearLeastSquares”,...“低”(0, 0),...“上”(正无穷,max (cdate)),...曾经繁荣的[1]);Ft = fittype(“*(取向)^ n”,“问题”,“n”,“选项”fo);
使用拟合选项和值拟合数据n= 2。
[curve2,gof2] = fit(cdate,pop,ft,“问题”, 2)
一般模型:curve2(x) = a*(x-b)^n系数(95%置信限):a = 0.006092 (0.005743, 0.006441) b = 1789(1784, 1793)问题参数:n = 2
gof2 =带字段的结构:上证指数: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*(x-b)^n系数(95%置信限):a = 1.359e-05 (1.245e-05, 1.474e-05) b = 1725(1718,1731)问题参数:n = 3
gof3 =带字段的结构:上证指数:232.0058 rsquare: 0.9981 dfe: 19 adjrsquare: 0.9980 rmse: 3.4944
将拟合结果与数据绘制。
持有在情节(curve2“米”)情节(curve3“c”)传说(“数据”,“n = 2”,“n = 3”)举行从
拟合三次多项式,指定归一化和鲁棒选项
加载一些数据,拟合并绘制一个三次多项式的中心和比例(正常化
)和稳健的拟合选项。
负载人口普查;f =适合(cdate、流行,“poly3”,“正常化”,“上”,“稳健”,“Bisquare”)
f =线性模型Poly3: f(x) = p1*x^3 + p2*x^2 + p3*x + p4其中x由平均值1890和std 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)分段线:由两段组成的线%不是连续的。Y = 0(大小(x));这个例子包含一个for循环和if语句%纯粹是为了举例。为I = 1:长度如果X (i) < k, y(i) = a + b.* X (i);其他的Y (i) = c + d.* x(i);结束结束结束
保存文件。
定义一些数据,创建指定函数的合适类型piecewiseLine
,使用拟合类型创建拟合英国《金融时报》
,并绘制结果。
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);Ft = fittype('piecewiseLine(x, a, b, c, d, k)') f = fit(x, y, ft,曾经繁荣的, [1,0,1,0,0.5]) plot(f, x, y)
排除匹配点
加载一些数据并拟合一个指定要排除的点的自定义方程。画出结果。
加载数据并定义一个自定义方程和一些起始点。
[x, y] =钛;gaussEqn =(a * exp() -(取向/ c) ^ 2) + d '
gaussEqn = 'a*exp(-((x-b)/c)²)+d'
startPoints = [1.5 900 10 0.6]
曾经繁荣=1×41.5000 900.0000 10.0000 0.6000
使用自定义方程和起始点创建两个拟合,并使用索引向量和表达式定义两个不同的排除点集。使用排除
从你的拟合中去除异常值。
f1 = fit(x',y',gaussEqn,“开始”曾经繁荣,“排除”, [1 10 25])
f1 =一般模型:f1(x) = a*exp(-((x-b)/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,“开始”曾经繁荣,“排除”, x < 800)
f2 =一般模型:f2(x) = a*exp(-((x-b)/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.6764)
绘制两者吻合的图。
情节(f1, x, y)标题(“拟合数据点1,10和25排除”)
图(f2,x,y)'与排除的x < 800的数据点拟合')
排除点和图拟合显示排除数据
您可以将排除的点定义为变量,然后将它们作为fit函数的输入提供。以下步骤重新创建前面示例中的拟合,并允许您绘制排除的点以及数据和拟合。
加载数据并定义一个自定义方程和一些起始点。
[x, y] =钛;gaussEqn =(a * exp() -(取向/ c) ^ 2) + d '
gaussEqn = 'a*exp(-((x-b)/c)²)+d'
startPoints = [1.5 900 10 0.6]
曾经繁荣=1×41.5000 900.0000 10.0000 0.6000
使用索引向量和表达式定义两组要排除的点。
Exclude1 = [1 10 25];Exclude2 = x < 800;
使用自定义方程、起始点和两个不同的排除点创建两个拟合。
f1 = fit(x',y',gaussEqn,“开始”曾经繁荣,“排除”, exclude1);f2 = fit(x',y',gaussEqn,“开始”曾经繁荣,“排除”, exclude2);
绘制两者的拟合并突出显示排除的数据。
情节(f1, x, y, exclude1)标题(“拟合数据点1,10和25排除”)
图;情节(f2, x, y, exclude2)标题('与排除的x < 800的数据点拟合')
对于具有排除点的曲面拟合示例,加载一些曲面数据并创建并绘制指定排除数据的拟合。
负载因特网F1 = fit([x y],z,“poly23”,“排除”, [1 10 25]);F2 = fit([x y],z,“poly23”,“排除”z > 1);图(f1, [x y], z,“排除”, [1 10 25]);标题(“拟合数据点1,10和25排除”)
图(f2, [x y], z,“排除”z > 1);标题(拟合数据点排除使z > 1)
拟合平滑样条曲线并返回拟合优度信息
加载一些数据,通过变量拟合平滑样条曲线月
而且压力
,并返回拟合信息和输出结构的优度。绘制拟合图和数据残差图。
负载enso;[曲线,良度,输出]=适合度(月,压力,“smoothingspline”);情节(压力曲线、月);包含(“月”);ylabel (“压力”);
绘制残差与x数据的关系(月
).
Plot(曲线,月份,压力,“残差”)包含(“月”) ylabel (“残差”)
中的数据输出
结构绘制残差与y数据的关系(压力
).
图(压力,输出,残差,“。”)包含(“压力”) 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)
使用匿名函数拟合自定义模型
类中传递其他数据时,可以使用匿名函数适合
函数。
加载数据并设置Emax
来1
在定义匿名函数之前:
数据= importdata(“OpioidHypnoticSynergy.txt”);丙泊酚= data.data(:,1);瑞芬太尼= data.data(:,2);Algometry = data.data(:,3);Emax = 1;
将模型方程定义为匿名函数:
效果= @(IC50A, IC50B, alpha, n, x, y)...Emax*(x/IC50A + y/IC50B + alpha*(x/IC50A))....* (y/IC50B))。^n ./(x/IC50A + y/IC50B +...*(x/IC50A). *(y/IC50B))。^n + 1);
使用匿名函数效果
的输入适合
函数,并绘制结果:
AlgometryEffect = fit([异丙酚,瑞芬太尼],AlgometryEffect,效果,...曾经繁荣的, [2,10,1,0.8],...“低”, [-Inf, -Inf, -5, -Inf],...“稳健”,“守护神”)图(AlgometryEffect,[异丙酚,瑞芬太尼],Algometry)
有关使用匿名函数和其他自定义模型进行拟合的更多示例,请参见fittype
函数。
找出设置起点和边界的系数顺序
对于属性上
,较低的
,曾经繁荣
,你需要找到系数项的顺序。
创建合适的类型。
Ft = fittype(" b * x ^ 2 + c * x +一个“);
方法获取系数名称和顺序coeffnames
函数。
coeffnames(英尺)
ans =3 x1细胞{'a'} {'b'} {'c'}
注意,这与用于创建的表达式中的系数顺序不同英国《金融时报》
与fittype
.
加载数据,创建拟合并设置起始点。
负载ensofit(月,压力,英国《金融时报》,曾经繁荣的, 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
.
或者,您可以获得适合选项并设置起始点和下界,然后使用新选项进行改装。
选项= fitoptions(ft)
options =归一化:'off'排除:[]权重:[]方法:'非线性最小二乘'稳健:'off' StartPoint: [1x0 double]下:[1x0 double]上:[1x0 double]算法:'Trust-Region' DiffMinChange: 1.0000 -08 DiffMaxChange: 0.1000显示:'Notify' MaxFunEvals: 600 MaxIter: 400 TolFun: 1.0000 -06 TolX: 1.0000 -06
选项。StartPoint = [10 1 3];选项。较低的=[0 -Inf 0]; fit(month,pressure,ft,options)
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
.不能包含正
或南
.在拟合中只使用复杂数据的实部。
例子:x
例子:(x, y)
数据类型:双
y
- - - - - -拟合数据
向量
拟合的数据,指定为具有相同行数的列向量x
.可以在MATLAB表中使用tablename.varname
.不能包含正
或南
.在拟合中只使用复杂数据的实部。
使用prepareCurveData
或prepareSurfaceData
如果你的数据不是列向量形式。
数据类型:双
z
- - - - - -拟合数据
向量
拟合的数据,指定为具有相同行数的列向量x
.可以在MATLAB表中使用tablename.varname
.不能包含正
或南
.在拟合中只使用复杂数据的实部。
使用prepareSurfaceData
如果你的数据不是列向量形式。例如,如果你有3个矩阵,或者你的数据是网格向量形式,其中length(X) = n, length(Y) = m
而且size(Z) = [m,n]
.
数据类型:双
fitType
- - - - - -适合的模型类型
特征向量|字符串标量|字符串数组|字符向量的单元格数组|匿名函数|fittype
拟合的模型类型,指定为表示库模型名称或MATLAB表达式的字符向量或字符串标量、单元格数组或线性模型术语的字符串数组、匿名函数或fittype
用fittype
函数。您可以使用任何有效的第一个输入fittype
作为一个输入适合
.
有关库模型名称的列表,请参见模型名称和方程.下表显示了一些常见的例子。
图书馆模型名称 |
描述 |
---|---|
|
线性多项式曲线 |
|
线性多项式曲面 |
|
二次多项式曲线 |
|
分段线性插值 |
|
分段三次插值 |
|
平滑样条(曲线) |
|
局部线性回归(曲面) |
要拟合自定义模型,请使用MATLAB表达式、线性模型项的单元格数组、匿名函数或创建fittype
与fittype
函数并使用它作为fitType
论点。有关示例,请参见使用匿名函数拟合自定义模型.有关线性模型术语的示例,请参见fitType
函数。
例子:“poly2”
fitOptions
- - - - - -算法的选择
fitoptions
类构造的算法选项fitoptions
函数。这是为合适的选项指定名称-值对参数的替代方法。
名称-值参数
指定可选参数对为Name1 = Value1,…,以=家
,在那里的名字
参数名称和价值
对应的值。名称-值参数必须出现在其他参数之后,但对的顺序无关紧要。
在R2021a之前,使用逗号分隔每个名称和值,并将其括起来的名字
在报价。
例子:“低”,(0,0),“上层”,正无穷,max (x),“曾经繁荣”,[1]
指定拟合方法、边界和起点。
正常化
- - - - - -选择集中和缩放数据
“关闭”
(默认)|“上”
选项将数据居中并缩放,指定为逗号分隔的对,由“正常化”
而且“上”
或“关闭”
.
数据类型:字符
排除
- - - - - -分不适合排除
表达式|索引向量|逻辑向量|空
要从拟合中排除的点,指定为逗号分隔的对,由“排除”
其中之一是:
描述逻辑向量的表达式,例如:
10 . X >
.一个整数向量,索引你想要排除的点,例如,
[1 10 25]
.所有数据点的逻辑向量
真正的
表示异常值,由excludedata
.
有关示例,请参见排除匹配点.
数据类型:逻辑
|双
问题
- - - - - -要分配给与问题相关的常量的值
单元阵列|双
要分配给与问题相关的常量的值,指定为逗号分隔的对,由“问题”
以及一个单元格数组,每个问题依赖常数有一个元素。详细信息请参见fittype
.
数据类型:细胞
|双
SmoothingParam
- - - - - -平滑参数
范围(0,1)中的标量值
平滑参数,指定为逗号分隔的对,由“SmoothingParam”
和一个0到1之间的标量值。默认值取决于数据集。只有适合类型为时才可用smoothingspline
.
数据类型:双
跨度
- - - - - -用于局部回归的数据点的比例
0.25(默认)|范围(0,1)中的标量值
在局部回归中使用的数据点的比例,指定为由逗号分隔的对组成的“跨越”
和一个0到1之间的标量值。只有适合类型为时才可用洛斯
或黄土
.
数据类型:双
健壮的
- - - - - -鲁棒线性最小二乘拟合方法
“关闭”
(默认)|守护神
|Bisquare
稳健线性最小二乘拟合方法,指定为逗号分隔对组成“稳健”
其中一个价值观是:
“守护神”
指定最小绝对残差方法。“Bisquare”
指定bisquare weights方法。
可在配合类型时使用方法
是LinearLeastSquares
或NonlinearLeastSquares
.
数据类型:字符
较低的
- - - - - -拟合系数的下界
[ ](默认)|向量
要拟合的系数的下界,指定为逗号分隔的对,由“低”
还有一个向量。默认值为空向量,表示拟合不受下界约束。如果指定了边界,则向量长度必须等于系数的数量。函数求向量值中系数的项的顺序coeffnames
函数。有关示例,请参见找出设置起点和边界的系数顺序.单独的无约束下界可以由负
.
适用于方法
是LinearLeastSquares
或NonlinearLeastSquares
.
数据类型:双
上
- - - - - -拟合系数的上界
[ ](默认)|向量
要拟合的系数的上界,指定为逗号分隔的对,由“上”
还有一个向量。默认值为空向量,表示拟合不受上界约束。如果指定了边界,则向量长度必须等于系数的数量。函数求向量值中系数的项的顺序coeffnames
函数。有关示例,请参见找出设置起点和边界的系数顺序.单独的无约束上界可以由+正
.
适用于方法
是LinearLeastSquares
或NonlinearLeastSquares
.
数据类型:逻辑
曾经繁荣
- - - - - -系数的初值
[ ](默认)|向量
系数的初始值,指定为逗号分隔的对,由曾经繁荣的
还有一个向量。函数求向量值中系数的项的顺序coeffnames
函数。有关示例,请参见找出设置起点和边界的系数顺序.
对象没有传递起始点(空向量的默认值)适合
函数中,一些库模型的起点是启发式确定的。对于有理模型和威布尔模型,以及所有自定义非线性模型,工具箱从区间(0,1)中均匀随机地为系数选择默认初始值。因此,使用相同数据和模型的多次拟合可能导致不同的拟合系数。要避免这种情况,请使用a指定系数的初始值fitoptions
对象的向量值曾经繁荣
价值。
适用于方法
是NonlinearLeastSquares
.
数据类型:双
算法
- - - - - -拟合程序使用的算法
“信赖域”(默认)|“Levenberg-Marquardt”
拟合过程中使用的算法,指定为逗号分隔的对,由“算法”
,要么“Levenberg-Marquardt”
或“信赖域”
.
适用于方法
是NonlinearLeastSquares
.
数据类型:字符
DiffMaxChange
- - - - - -有限差分梯度的最大系数变化
0.1(默认)
有限差分梯度的最大系数变化,指定为由逗号分隔的对组成的“DiffMaxChange”
一个标量。
适用于方法
是NonlinearLeastSquares
.
数据类型:双
DiffMinChange
- - - - - -有限差分梯度的最小系数变化
108(默认)
有限差分梯度的最小系数变化,指定为由逗号分隔的对组成的“DiffMinChange”
一个标量。
适用于方法
是NonlinearLeastSquares
.
数据类型:双
显示
- - - - - -在命令窗口中显示选项
“通知”
(默认)|“最后一次”
|“通路”
|“关闭”
命令窗口中的显示选项,指定为由逗号分隔的对组成“显示”
其中一个选项是:
“通知”
仅在拟合不收敛时显示输出。“最后一次”
只显示最终输出。“通路”
显示每次迭代的输出。“关闭”
不显示输出。
适用于方法
是NonlinearLeastSquares
.
数据类型:字符
MaxFunEvals
- - - - - -模型允许的最大评估次数
600
(默认)
模型允许的最大计算数,指定为由逗号分隔的对组成的“MaxFunEvals”
一个标量。
适用于方法
是NonlinearLeastSquares
.
数据类型:双
麦克斯特
- - - - - -适合所允许的最大迭代次数
400
(默认)
拟合所允许的最大迭代次数,指定为逗号分隔的对,由“麦克斯特”
一个标量。
适用于方法
是NonlinearLeastSquares
.
数据类型:双
TolFun
- - - - - -模型值的终止公差
106(默认)
模型值上的终止容差,指定为由逗号分隔的对组成“TolFun”
一个标量。
适用于方法
是NonlinearLeastSquares
.
数据类型:双
TolX
- - - - - -系数值的终止公差
106(默认)
终止公差上的系数值,指定为由逗号分隔的对组成“TolX”
一个标量。
适用于方法
是NonlinearLeastSquares
.
数据类型:双
输出参数
gof
-拟合优度统计
gof
结构
拟合度统计,返回为gof
结构,包括此表中的字段。
场 |
价值 |
---|---|
|
误差平方和 |
|
r平方(决定系数) |
|
误差中的自由度 |
|
自由度调整系数的决定 |
|
均方根误差(标准误差) |
输出
-拟合算法信息
输出
结构
拟合算法信息,返回为输出
结构,包含与拟合算法相关的信息。
字段取决于算法。例如,输出
非线性最小二乘算法的结构包括此表中所示的字段。
场 |
价值 |
---|---|
|
观察数(响应值) |
|
拟合的未知参数(系数)的数目 |
|
残差向量 |
|
雅可比矩阵 |
|
描述算法的退出条件。阳性标志表示收敛,在公差范围内。零标志表示超过了函数计算或迭代的最大数量。负标志表示算法没有收敛到解决方案。 |
|
迭代次数 |
|
函数求值的数量 |
|
一阶最优性测度(梯度分量的绝对最大值) |
|
拟合算法 |
版本历史
另请参阅
应用程序
功能
第一MATLAB
海脂循环匹配函数对应求解MATLAB:
Esegui il commanmando inserendolo nella finestra di commanmando MATLAB。我的浏览器web不支持和MATLAB万博1manbetx。
您也可以从以下列表中选择一个网站:
如何获得最佳的网站性能
选择中国站点(中文或英文)以获得最佳站点性能。其他MathWorks国家站点没有针对您所在位置的访问进行优化。