# 曲线与曲面拟合
命令行窗口的曲线与曲面拟合
# 拟合曲线
为了编程式地拟合曲线,可以使用以下的步骤:
- 读取数据。
using TyCurveFitting
using TyMath
include(pkgdir(TyCurveFitting) * "/examples/docs/hahn1.jl")
- 使用 fit 函数创建拟合,指定变量、初值(固定结果)与模型类型(这个示例中使用的模型为有理数模型,模型名称为 "rational23")。
ip = rand(MersenneTwister(1234),6)
f = fit("rational23", temp, thermex,startpt=ip)
- 绘制拟合与数据。
plotfit(f,temp,thermex)
# 拟合曲面
为了编程式地拟合曲面,可以使用以下的步骤:
- 读取数据。
using TyCurveFitting
include(pkgdir(TyCurveFitting) * "/examples/docs/franke.jl")
- 使用 fit 函数创建拟合,指定变量、初值(固定结果)与模型类型(这个示例中 poly23 为模型类型)。
f = fit("poly23",[x y],z)
- 绘制拟合与数据。
plot3fit(f,[x y],z)
# 模型类型与拟合分析
特定模型类型与拟合分析的细节与示例可以参见以下几节:
# 命令行拟合的工作流
曲线拟合工具箱提供了数据分析与建模的多种方法。
为了使用编程式拟合与分析的曲线拟合函数,参照这个工作流:
使用 include 指令导入数据(如果您的数据之前就以 Syslab 变量的形式储存了)或者任意读取其他文件格式的其他 Syslab 函数。您可能可能需要改变数据形状,参见prepareCurveData或prepareSurfaceData。
(可选)如果您的数据存在噪声,则您可能想要使用smooth函数平滑数据。平滑是为了识别出数据的主要趋势,这可以帮助您选择合适的参数拟合模型。如果参数模型不适用,平滑本身也可以成为拟合的最后一步,这为数据提供了一个非参数拟合。
注意
平滑估计响应分布在各预测基点处的中心值。这违背了数据中的误差独立的假设,也因此无法计算信赖与预测区间。因此,即使通过平滑知道了需要使用什么参数模型,也需要把原数据传给fit函数。
指定数据的参数模型,要么是一个曲面拟合工具箱的内置模型,要么是您定义的自定义模型。您可以把模型名称或者表达式或使用 fittype 函数创建的 FitType 对象传入 fit 函数以指定模型。
已有的内置模型,可以参见曲线与曲面拟合的内置模型列表。
(可选)您可以使用 fitoptions 函数创建拟合线性结构体。拟合选项可以指定比如数据的权重,拟合算法,以及拟合算法下界选项。
(可选)您可以使用 excludedata 函数创建排除规则。排除规则指定了什么数据应该被视为例外值并从拟合中排除。
指定模型(名称,表达式或 FitType 对象),x,y 以及(可选)拟合选项结构体以及排除规则,使用 fit 函数进行拟合。
fit 函数返回 FitResult 对象,该对象包含所有计算的系数与拟合统计参数。如果您希望更多地了解拟合对象,参见[曲线与曲面拟合对象与对象函数]。
您可以对 fit 函数返回的拟合对象进行后处理,这可以通过将其传入各种函数里完成,比如 fvallm, differentiate1, differentiate2, integrate, plotfit, plot3fit, coeffvalues, probvalues, confint, 以及 predint。
| 曲线或曲面拟合方法 | 说明 |
|---|---|
| argnames | 读取输入参数名称 |
| category | 读取拟合类别 |
| coeffnames | 读取系数名称 |
| coeffvalues | 读取系数值 |
| confint | 读取拟合系数信赖区间 |
| dependnames | 读取因变量名称 |
| differentiate1 | 微分曲线拟合 |
| differentiate2 | 微分曲面拟合 |
| excludedata | 从拟合中排除数据 |
| fvallm | 模型在特定点进行求值 |
| fittype | 构造 FitType 对象 |
| formula | 读取公式 |
| indepnames | 读取自变量名称 |
| integrate | 积分曲线拟合 |
| islinear | 决定模型是否线性 |
| numargs | 读取输入参数个数 |
| numcoeffs | 读取系数个数 |
| plotfit | 绘制曲线拟合 |
| plot3fit | 绘制曲面拟合 |
| predint | 读取预测区间 |
| probnames | 读取问题参数名称 |
| probvalues | 读取问题参数值 |
| quad2d | 数值积分曲面拟合 |
| set_option | 设置模型拟合选项 |
| typecur | 读取模型名称 |
# 另请参阅
fit | fittype | fitoptions | excludedata | prepareCurveData | prepareSurfaceData