线性方程组组成的超定系统在不同类型的曲线拟合中经常出现。下面举例介绍。
在下面的数据中,y是在不同时间t内测得的数据,下面利用该数据进行曲线拟合。曲线模型假定为:
t 0.00 0.30 0.80 1.10 1.60 2.30
y 0.82 0.72 0.63 0.60 0.55 0.50
在MATLAB命令窗口中输入下面的语句:
code.matlab
>> t = [0 .3 .8 1.1 1.6 2.3]';
>> y = [.82 .72 .63 .60 .55 .50]';
利用最小二乘法拟合,可以计算拟合模型中的待定系数。现在利用给定的数据可以得到6个方程,有2个未知数,用下面的62矩阵表示:
code.matlab
>> E = [ones(size(t)) exp(-t)]
E =
1.0000 1.0000
1.0000 0.7408
1.0000 0.4493
1.0000 0.3329
1.0000 0.2019
1.0000 0.1003
下面使用反斜线运算符获取最小二乘解:
code.matlab
>> c = E\y
c =
0.4760
0.3413
所以最后得到的曲线模型为:
下面首先生成均匀间隔的时间序列T,然后利用上面得到的模型计算Y值,并利用T和Y绘图。
code.matlab
>> T = (0:0.1:2.5)';
>> Y = [ones(size(T)) exp(-T)]*c;
>> plot(T,Y,'-',t,y,'o')
通过检验可以发现,E*c并不精确等于y,但是差距很小,如图3-1所示。
图3-1 拟合模型的图形