导读
matlab数据拟合工具箱cftool可以对线性和非线性的数据进行自动选择函数方程进行拟合,以下将以一个线性应用例子分别通过最小二乘法计算和cftool工具箱拟合得出经验方程,观察拟合结果。
示例
例子:用X光机检查镁合金铸件内部缺陷时,为了获得最佳的灵敏度,透视电压y应随透视件的厚度x而改变,经实验获得下表所示的一组数据,假设透视件的厚度工无误差,试求透视电压y随着厚度x变化的经验公式。
x/mm | y/kV |
---|---|
12 | 52 |
13 | 55 |
14 | 58 |
15 | 61 |
16 | 65 |
18 | 70 |
20 | 75 |
22 | 80 |
24 | 85 |
26 | 91 |
最小二乘法计算
选定函数公式
本示例为输入输出量之间为线性关系,则选定线性函数为:y=kx+b
由此我们可以列出误差方程:Yi-(kxi+b)=Vi (i=1,2,…,10)
其中Yi为在透视件厚度xi下测得的透视电压。
计算
令m=k,n=b,则误差方程可写为:
52- (n+ 12m) =V1
55- (n+ 13m) =V2
58- (n +14m) =V3
61- (n+ 15m) =V4
65- (n+ 16m) =V5
70- (n +18m) =V6
75- (n+ 20m) =V7
80- (n+ 22m) =V8
85- (n +24m) =V9
91- (n +26m) =V10
要得到可信赖的结果,我们要使残余误差Vi的平方和最小,根据极值条件得Vi的平方对n和m的偏导应为零。由此我们可以得到上述方程的正规方程:
[a1a1]n+[a1a2]m=[a1Y]
[a2a1]n+[a2a2]m=[a2Y]
[a1a1]=a11a11+a21a21+…+a101a101
[a1a2]=a12a11+a21a22+…+a101a102
[a2a1]=a11a12+a21a22+…+a101a102
[a2a2]=a12a12+a22a22+…+a102a102
[a1Y]=a11Y1+a21Y2+…+a101Y10
[a2Y]=a12Y1+a22Y2+…+a102Y10
其中ai1(i=1,2,…,10)为n的系数,ai2(i=1,2,…,10)为m的系数。
于是有
10n+180m=692
180n+3450m=13032
上式解得:
m=2.742857142857143≈2.743;
n=19.828571428571426≈19.82
所求得经验公式为:y=2.743x+19.82
cftool工具箱拟合
命令行输入数据
在命令行中输入本例数据如下:
X=[12 13 14 15 16 18 20 22 24 26]
Y=[52 55 58 61 65 70 75 80 85 91]
随后在workplace中有了我们调用工具箱所需的拟合数据,此时启动工具箱,在命令行中输入:
cftoll
cftool设置
我们使用的是matlab2019b版本,打开工具箱后页面如下图所示
随后我们在可以在Fit name栏目中输入本次数据拟合的名称,我们取名为Voltagefit,再在X data中下拉选择自变量数组数据X,Y data中下拉选择因变量数据Y,在页面的右上方已经默认勾选了自动拟合,下图为拟合结果:
可以看到页面右下方有拟合出的曲线,左下方有具体的拟合结果,其中:
p1 =2.743,p2 =19.83
与我们使用最小二乘法计算的结果一致。
总结
以上示例中展示了使用最小二乘法对线性函数关系的拟合计算过程和matlab的cftool工具箱的基本使用。本文主要用于学习过程中知识的记录,其中计算方法步骤主要参考于学习教材,如有错误欢迎指正。