高程拟合的matlab代码,利用MATLAB结合C语言实现GPS高程二次曲面拟合

熊志强+肖腾飞

高程拟合的matlab代码,利用MATLAB结合C语言实现GPS高程二次曲面拟合_第1张图片

摘 要:对GPS高程曲面拟合的研究有很多,通常人们实现GPS高程曲面拟合都是用单一的编程语言。而文章则介绍结合两种编程语言更加方便地实现GPS高程二次曲面拟合。

关键词:GPS高程;二次曲面拟合;MATLAB;c语言

1 概述

随着GNSS技术的发展,GPS高程测量也更加受到重视,但GPS直接测出的为地面点的大地高,与水准高之间存在高程异常,因此,若想直接利用GPS测定水准高,需要拟合出当地的似大地水准面,通常采用二次曲面拟合,用编程实现。而编程语言较多,利用MATLAB和c语言各自的优势相结合实现二次曲面拟合会更加便捷。

2 GPS高程及二次曲面拟合原理

在实际应用中,地面点的高程采用正常高系统。地面点的正常高H_r是地面点沿铅垂线至似大地水准面的距离。这种高程是通过水准测量来确定的。地面点的大地高H是地面点沿铅垂线至参考椭球面的距离。这就有必要找出GPS点H与Hr的关系,并用一定的方法将H转换为Hr。似大地水准面至椭球面间的高差ζ,叫做高程异常。如果知道了各GPS点的高程异常ζ值,则可由各GPS点的大地高H求得各点的正常高Hr。

当GPS点布设成一定区域面时,可以应用数学曲面拟合法求待定点的正常高。其原理是,根据测区中已知点的平面坐标x,y和ζ值,拟合出测区似大地水准面,再内插出待求点的ζ,从而求出待求点的正常高。设点的ζ与平面坐标x,y有以下关系: ζ=f(x,y)+ ε,式中f(x,y)为ζ中趋势值,ε为误差。设

f(x,y)=a0+a1x+a2y+a3x2+a4y2+a5xy+… (1)

写成矩阵形式有:ζ=XB+ε (2)

式中ζ=[ζ1 ζ2…ζn]T,B=[a1 a2…an]T,ε=[ε1 ε2…εn]T。

X=1 x1 y1 x12 …1 x2 y2 x22 …1 xn yn xn2 … (3)

对每个已知点,都可列数以上方程,在ε的平方和最小的条件下,解出各ai,再按式(2)求出待求点的ζ,从而求出Hr。对于二次曲面拟合,由式(1)可知,只需求出六个参数即可确定函数f(x,y),便可根据坐标求出待求点的高程异常,从而求出正常高。

3 MATLAB和c语言的优势

MATLAB的基本数据单位是矩阵,它的指令表达与数学中常用的形式相似。例如,矩阵方程Ax=b在MATLAB中被写成A*x=b,若要通过A、b求x,只需写x=A\b即可,完全不需要对矩阵的乘法和求逆进行编程。因此用MATLAB解决计算问题比用其它语言简捷得多。进行GPS高程二次曲面拟合则主要为矩阵的运算,根据(2)式,在MATLAB中即可很方便地求出曲面拟合的各参数。

用MATLAB求解出拟合参数后,便可用C语言进行编程,求出各待求点的正常高。使用C语言有很大的优势。C语言使用方便灵活。比起其它许多高级语言简练,因此输入程序时工作量少。C语言用函数作为程序的模块单位,便于实现程序的模块化。利用C语言编写高程拟合程序,只需定义一个主函数和一个求高程异常的函数即可。在拟合区域改变后,只需改变拟合参数的值即可同样求出待求点的正常高,所以利用C语言求正常高十分方便。

4 流程及程序设计

为使利用MATLAB和C语言结合进行GPS高程拟合更加清晰,现写出流程图:

为验证可行性,以某一测区数据为例进行试验。选用六个已知点坐标求解出六个拟合参数,然后拟合出二次曲面。

经过编程计算,拟合出的二次曲面为(式中单位均为m):

f(x,y)=-40.880-1.285×10-3x+6.300×10-4y+1.210×10-6x2-6.760×10-7y2+1.47×10-6xy (4)

将(4)式中的拟合参数输入C语言代码中,即可求出待求点的正常高。

5 结论

结果表明,利用MATLAB结合C语言可以更加方便地实现区域GPS高程二次曲面拟合,利用MATLAB求解拟合参数不需要对矩阵的乘法和求逆进行编程。利用C语言根据拟合参数求正常高也十分简捷,对于不同的测区,只需用不同的拟合参数即可,只需更改参数值而无需更改代码。所以利用MATLAB结合C语言进行GPS高程曲面拟合在实际测量工作中会更加便捷,有很大的实用价值。

参考文献

[1]徐绍铨,张华海.GPS测量原理及应用[M].武汉:武汉大学出版社,2008.

[2]魏鑫.MATLAB R2014a从入门到精通[M].北京:电子工业出版社,2015.

[3]譚浩强.C程序设计[M].北京:清华大学出版社,2010.

[4]刘磊.用MATLAB实现GPS水准高程拟合[J].城市建设理论研究,2013(14).

[5]刘谊,汪民主,汪金花.GPS高程二次曲面拟合及其程序[J].矿山测量,2004,6(2).

你可能感兴趣的:(高程拟合的matlab代码)