求解方程组得到Mi(i=0,1,2,… ,n),代入S(x)即为相临两点间的三次样条函数,n段三次样条曲线以已知数据点为临界衔接点进行连接便可得出一条通过所有数据点的平滑曲线。
5 MATLAB实现样条插值
在本系统中,路线数据的采集点以经纬度描述,整条路线类似于二维曲线,以实验测试路段为例,其采集点如下:
表一 路线采集点数据
三次样条插值过程实质上就是求解三次样条函数的过程,在实际应用中,首先必须根据具体样本点情况构造出合适的三次样条函数,但这需要工程技术人员具备良好的数学功底和数据分析能力。此外,对于离散样本点较多的情况,编制计算机程序求解大方程组也不简单。
MATLAB将高性能的数值计算和可视化集成在一起,并提供了大量专业领域的内置函数,从而被广泛地应用于科学计算、控制系统、信息处理等领域的分析、仿真和设计工作。就数值插值而言,MATLAB提供有一维、二维、三维插值方法,对于一维插值可通过函数interp1(x,y,xi,'method')实现,其中x,y是已知数据点的值,xi是要内插的数据点,method是内插方法,可以指定为一次(linear)、三 次(cubic)方程式或spline函数,其预设方法是linear。如果数据的变化较大,以 spline函数内插所形成的曲线最平滑 ,所以效果最好。而三次方程式所得到的内插曲线平滑度,则介于线性与spline函数之间。
对表一数据进行插值,步骤如下:
1. 分析经纬两组数据,以相对单调性较好的一组为自变量确定插值精度。表一数据比较简单,可以经度为自变量,0.1’为步长确定需要内插数据点矩阵(GPS接收机输出的经纬度数据由度数和分数组合在一起,如10352.0329表示103度52.0329分,在应用中需要统一转换成以分为单位。本文的实验测试路线较短,不涉及度数部分的变化,为了直观,暂不做转换)。
2. 将已知数据点列成12*2矩阵形式。
3. 调用interp1(x,y,xi,'method')函数,选择内插方法为spline,所得结果与内插数据点构成2*27矩阵,该矩阵每列上的两个数据即为拟合路线上位置点经纬度。
对应程序如下:
x=[10352.0329 10352.3988 10353.0197 10353.2919 10353.246 10353.3482 10353.5829 10353.7319 10354.1310 10354.2028 10354.5745 10354.6678; 3018.2936 3018.6298 3018.7247 3019.1021 3019.2701 3019.5516 3019.844 3020.0859 3020.9478 3021.167 3022.5694 3022.7908]';
1.03544329000000 1.03545329000000 1.03546329000000 ; 0.30182936000000 0.30186004069566 0.30187182180522 0.30186964693605 0.30185845969551 0.30184320369097 0.30182882252981 0.30182025981940 0.30182245916710 0.30184036418029 0.30187889352712 0.30192733665639 0.30193266863021 0.30193987411039 0.30199701768689 0.30198992627645 0.30198730620686 0.30200882997022 0.30203060327638 0.30205012896416 0.30207062461427 0.30209530780615 0.30212717111085 0.30216587747376 0.30220651085041 0.30224372965360 0.30227219229616]
由于步长足够小,产生的数据相对原数据丰富的多,拟合出的路线曲线平滑,这可通过函数plot()进行效果显示。在具体路线的拟合过程中,可根据GPS数据采集点的密度改变插值步长,以达到实际控制要求。
6 小结
GPS在应用过程中的工作主要集中在定位数据的采集和后续处理,特别是在与GIS(地理信息系统)的结合应用中,为了描绘实际地理形状或路线,必须采取一定的算法尽量见减小结果误差。三次样条插值以其优良的数学特征正好满足这方面的需求,结合功能强大的MATLAB工具,其实现简单方便,大大提高了相关设计目标的质量。