资源描述:
《GPS用户位置求解Matlab仿真121118》由会员上传分享,免费在线阅读,更多相关内容在行业资料-天天文库。
1、GPS定位技术与应用实验——GPS用户位置求解Matlab仿真一、定位原理GPS用户对卫星j进行伪距测量,产生观测方程:222()xxy()yz()zc(1)jjujujuu其中(xj,yj,zj)表示第j颗卫星的位置坐标;(xu,yu,zu)是用户的位置坐标,u是用户接收机钟与GPS系统时钟的相对误差。设一共观测到N颗卫星,则得到方程组:()xx222()yy()zzc11uuu11u()xxy222()yz()zc22uuu22u(2)222
2、()xxyyzzc()()NNuNuNuu定位的目的就是计算(xu,yu,zu)和u。直接求解上述非线性方程组十分困难。可以采用牛顿迭代法这种常用的数值计算方法,其中的关键思想是线性化及最小二乘法。具体过程如下:对用户位置进行估计,得到估计位置坐标(x0,y0,z0),用(x,y,z)表示估计位置与真实位置的偏移量,即xxxu0yyy(3)u0zzzu0222设f(,,)(xyzxx)(yy)(zz),并把它在(x0,y0,z0)做一阶泰勒级数展uuujujuju开得:fxyz(,,
3、)uuufxyz(,,)fxyz(,,)fxyz(,,)000000000f(,,)xyzxyz(4)000xyz000xxyyzzjjj000f(,,)xyzxyz000fxyz(,,)fxyz(,,)fxyz(,,)000000000因此,把对卫星j的观测方程线性化后得到:xxyyzzjjj000f(,,)xyzxyzc(5)j000ufxyz(,,)fxyz(,,)fxyz(,,)000000000令fxyz(,,)jj000xxaj0x
4、jfxyz(,,)000yy(6)j0ayjfxyz(,,)000zzj0azjfxyz(,,)000伪距观测方程变化为:axayazc(7)jxjyjzju把方程组(2)中的每个方程线性化,得到下面的线性方程组:axayazc11xyzu11axayazc22xyzu22(8)axayazcNxNyNzNu把(8)写成矩阵形式,可得:ρHx(9)其中1aaaxyz1111x
5、2aaaxyz2221yρ,H,x。zNaaaxNyNzN1cu按照上述方法,求解非线性方程组(2)的问题被转化为求解线性方程组(见(8)和(9))。如果只能观察到4颗卫星,即N=4,(8)和(9)是个根据4条线性方程求解4个未知数的问题,具有唯一解:1xHρ(10)如果能观察到的卫星数量大于4,即N>4,求解(8)和(9)是个超定方程组(即方程数量大于未知数的数量),此时需要使用最小二乘法求,解的形式为:TT1xHHH()ρ(11)求出
6、(x,y,z)后,使用(3)便求出用户坐标。迭代:因为线性化使用了一阶泰勒级数展开近似,这种近似只有当估计坐标(x0,y0,z0)非常接近真实坐标(xu,yu,zu)时才有效。如果(x,y,z)太大,需要用本次计算得出的坐标(xu,yu,zu)作为下一次计算的估计坐标(x0,y0,z0),重新迭代上述计算过程,直到计算得到的(x,y,z)的值比较小为止。二、Matlab程序代码下面Matlab程序完成利用伪距测量用户位置的Matlab仿真计算。1、主程序SatellitePosition=[1774617572736
7、51;12127-9774210911;13324-18178143921;14000-13073190581;19376-15756-73651;zeros(19,4)];%卫星位置%卫星位置坐标,每一行数据的前三列分别表示卫星的X、Y、Z坐标值,第4列数据表示本颗卫星是否可见,1为可见,0为不可见。UserPosition=[640000];%用户真实位置(注意:定位程序并未用到此参数)Prange=CalculatePseudoRange(SatellitePosition,UserPosition);%函数CalculateP
8、seudoRange用于计算机模拟伪距测量结果,计算结果Prange是一个矢量,其中的不同元素表示对不同卫星的伪距测量结果[CalUserPosition,OK]=CalculateUserPosition2(Satel