MATLAB拟合工具箱函数的使用

MATLAB拟合曲线的方法有很多,针对不同的函数类型应选用合适的拟合方法。
按照拟合方法来进行划分,一般可将待拟合的函数分为曲线/曲面拟合多元函数拟合

曲线/曲面拟合

cftool工具箱使用

曲线曲面拟合多是基于cftool拟合工具箱使用,使用非常方便,但只能对拟合一元、二元函数(当然,可以通过适当的变换对函数进行处理,使其能够在cftool中进行处理)。cftool工具一方面可以在MATLAB的APP中使用,同样也可以在命令窗口中使用。
下面结合MATLAB命令与工具箱选项进行说明:
在这里插入图片描述
拟合方法
主要是指拟合所采用的函数,如线性拟合,多项式拟合,以及自定义函数拟合等等。具体如下:

  • Custom Equations 用户自定义函数
  • Expotential e指数函数
  • Fourier 傅立叶函数,含有三角函数
  • Gaussian 正态分布函数,高斯函数
  • Interpolant 插值函数,含有线性函数,移动平均等类型的拟合
  • Polynomial 多项式函数
  • Power 幂函数
  • Rational 有理函数
  • Smooth Spline (光滑插值或者光滑拟合,不太清楚)
  • Sum of sin functions 正弦函数类
  • Weibull 威布尔函数

稳健性Robust

  • off:关闭,即采用传统的最小二乘方法进行拟合
  • LAR:Least Absolute Residual(最小绝对残差),以残差平方最小为目标进行拟合。
  • Bisquare:根据距离拟合线的距离加权,有些异常值权重为0,相当于对其进行剔除。

拟合效果评估
在这里插入图片描述

拟合工具箱对应函数的使用与可视化

拟合工具箱主要涉及的函数有:fit fitype等。 这里以一元线性拟合为例进行说明:

1
2
3
4
5
6
7
8
9
10
11
12
13
%MATLAB拟合工具箱的使用
xdata = x_fit_4;ydata = y_fit_4;
% f = fittype('k*x+b') %采用自定义函数
[fit1, estimate1] = fit(xdata,ydata,'poly1') % 针对原始数据的拟合
fdata = feval(fit1, xdata); % 求得拟合数据
I = abs(fdata-ydata) > 1.5*std(ydata);%
剔除点计算方法outliers = excludedata(xdata, ydata, 'indices', I) % 找到对应的剔除数据点
[fit2, estimate2] = fit(xdata, ydata, 'poly1',...    'Exclude', outliers) % 针对剔除异常点后的拟合
[fit3, estimate3] = fit(xdata, ydata, 'poly1',...    'Robust', 'on') % 采用稳健性拟合
plot(fit1,'r-',xdata,ydata,'k.',outliers,'m*') % 绘制拟合曲线,原始数据,剔除数据点。
hold on
plot(fit2,'c--')
plot(fit3,'b:')

输出结果如下:

fit1 =
Linear model Poly1:
fit1(x) = p1x + p2
Coefficients (with 95% confidence bounds):
p1 = 1.545 (1.156, 1.933)
p2 = 4.901 (3.619, 6.184)
estimate1 = 包含以下字段的 struct:
sse: 454.1470
rsquare: 0.5046
dfe: 62
adjrsquare: 0.4966
rmse: 2.7065
fit2 =
Linear model Poly1:
fit2(x) = p1
x + p2
Coefficients (with 95% confidence bounds):
p1 = 1.517 (1.186, 1.847)
p2 = 4.718 (3.625, 5.812)
estimate2 = 包含以下字段的 struct:
sse: 317.3518
rsquare: 0.5838
dfe: 60
adjrsquare: 0.5768
rmse: 2.2998
fit3 =

Linear model Poly1:
fit3(x) = p1*x + p2
Coefficients (with 95% confidence bounds):
p1 = 1.513 (1.145, 1.881)
p2 = 4.712 (3.498, 5.927)
estimate3 = 包含以下字段的 struct:
sse: 407.4742
rsquare: 0.5555
dfe: 62
adjrsquare: 0.5484
rmse: 2.5636

在这里插入图片描述
进一步采用绘图窗口的Prediction bounds for function 绘图选项可以得到函数拟合的边界图如下:
在这里插入图片描述

多元函数拟合

多元函数的拟合,建议一般先将其转换为线性拟合方式,具体参考我的另外一篇博客
MATLAB求解模型待定系数

参考文献

拟合工具箱的使用