1、1.深入了解单点定位的计算过程;2.加强单点定位基本公式和误差方程式,法线方程式的记忆;3.通过上机调试程序加强动手能力的培养。二实验原理 一个接收机接受三个火三个以上卫星信号,得出卫星坐标和伪距,利用间接平差计算接收机的坐标。 三实验内容列出伪距观测方程伪距方程线性化得出各个坐标的l,m,n组成误差方程组AiX+Li=Vi间接平差得出新的接收机坐标X,Y,Z输入原始数据循环多次精度评定打印输出1.程序流程图 2、实验数据3、实验程序代码Private Sub Command1_Click()CommonDialog1.Filter = TXT files|*.txt|CommonDialog
2、1.FilterIndex = 1CommonDialog1.ShowOpenOpen Me.CommonDialog1.FileName For Input As #1Do While Not EOF(1)Line Input #1, Texttextbuff = textbuff + Text + vbCrLfLoopClose #1kk = MSFlexGrid1.Rows - 1Dim aReDim a(kk - 1)a = Split(textbuff, vbCrLf)For j = 1 To kk For i = 1 To 5 MSFlexGrid1.TextMatrix(j, i
3、) = a(j - 1 + 5 * (i - 1)Next iNext jFor k = 1 To kkMSFlexGrid1.TextMatrix(k, 0) = 第 & k & 个点Next kMSFlexGrid1.TextMatrix(0, 1) = XMSFlexGrid1.TextMatrix(0, 2) = YMSFlexGrid1.TextMatrix(0, 3) = ZMSFlexGrid1.TextMatrix(0, 4) = 伪距MSFlexGrid1.TextMatrix(0, 5) = 钟差End SubPrivate Sub Command2_Click()X0 =
4、 0: Y0 = 0: Z0 = 0c = 299792458Dim a()ReDim a(kk - 1, 3)Dim ll()ReDim ll(kk - 1, 0)For ii = 1 To 100For i = 1 To kk l = (MSFlexGrid1.TextMatrix(i, 1) - X0) / Sqr(MSFlexGrid1.TextMatrix(i, 1) - X0) 2 + (MSFlexGrid1.TextMatrix(i, 2) - Y0) 2 + (MSFlexGrid1.TextMatrix(i, 3) - Z0) 2) m = (MSFlexGrid1.Tex
5、tMatrix(i, 2) - Y0) / Sqr(MSFlexGrid1.TextMatrix(i, 1) - X0) 2 + (MSFlexGrid1.TextMatrix(i, 2) - Y0) 2 + (MSFlexGrid1.TextMatrix(i, 3) - Z0) 2) n = (MSFlexGrid1.TextMatrix(i, 3) - Z0) / Sqr(MSFlexGrid1.TextMatrix(i, 1) - X0) 2 + (MSFlexGrid1.TextMatrix(i, 2) - Y0) 2 + (MSFlexGrid1.TextMatrix(i, 3) -
6、 Z0) 2) a(i - 1, 0) = l a(i - 1, 1) = m a(i - 1, 2) = n a(i - 1, 3) = -1lk = MSFlexGrid1.TextMatrix(i, 4) - Sqr(MSFlexGrid1.TextMatrix(i, 1) - X0) 2 + (MSFlexGrid1.TextMatrix(i, 2) - Y0) 2 + (MSFlexGrid1.TextMatrix(i, 3) - Z0) 2) + c * MSFlexGrid1.TextMatrix(i, 5)ll(i - 1, 0) = lkgzs = xc(qiuni(xc(z
7、z(a), a), xc(zz(a), ll)X0 = X0 - gzs(0, 0)Y0 = Y0 - gzs(1, 0)Z0 = Z0 - gzs(2, 0)j = j + 1Next iiText2.Text = X= X0 & vbCrLf &Y= Y0 &Z= Z0V = jian(ll, xc(a, gzs)zjl = xc(zz(V), V)0 = Sqr(zjl(0, 0) / (kk - 3)Qx = qiuni(xc(zz(a), a)Text3.Text = X= 0 * Sqr(Qx(0, 0) &Y= 0 * Sqr(Qx(1, 1) &Z= 0 * Sqr(Qx(2,
8、 2)Private Sub Form_Load()MSFlexGrid1.ColWidth(1) = 1300MSFlexGrid1.ColWidth(2) = 1300MSFlexGrid1.ColWidth(3) = 1300MSFlexGrid1.ColWidth(4) = 1300矩阵相减Public Function jian(m, n)Dim i, j As IntegerIf UBound(m, 1) UBound(n, 1) Or UBound(m, 2) UBound(n, 2) ThenMsgBox (请确认输入数组是否可以相减!)ElseDim c()ReDim c(U
9、Bound(m, 1), UBound(n, 2)For i = 0 To UBound(c, 1)For j = 0 To UBound(c, 2)c(i, j) = m(i, j) - n(i, j)jian = cEnd IfEnd Function矩阵的转置Public Function zz(a)Dim i As Integer, j As Integer, t As Integer, b()If UBound(a, 1) = UBound(a, 2) ThenFor i = 0 To UBound(a, 1)For j = 0 To UBound(a, 2)If i j Thent
10、 = a(i, j)a(i, j) = a(j, i)a(j, i) = tzz = aReDim b(UBound(a, 2), UBound(a, 1)For i = 0 To UBound(a, 2)For j = 0 To UBound(a, 1)b(i, j) = a(j, i)zz = b两矩阵相乘Public Function xc(a, b)Dim i As Integer, j As Integer, k As IntegerIf UBound(a, 2) UBound(b, 1) Then这两个矩阵不能够相乘Exit FunctionReDim sd(UBound(a, 1
11、), UBound(b, 2)For j = 0 To UBound(b, 2)For k = 0 To UBound(b, 1)sd(i, j) = sd(i, j) + a(i, k) * b(k, j)xc = sdPublic Function qiuni(a)Dim c, m%, n%, p#, l%, i%, j%, ab#m = UBound(a, 1)n = UBound(a, 2)If m n Then该矩阵不可逆!ReDim c(m, 2 * n + 1)For i = 0 To m For j = 0 To n c(i, j) = a(i, j) Next j For j
12、 = m + 1 To 2 * m + 1 c(i, j) = 0i = 0For j = m + 1 To 2 * m + 1 c(i, j) = 1 i = i + 1For k = 0 To n If c(k, k) = 0 Then For i = k + 1 To n If c(i, k) 0 Then GoTo this End If Next i If i = n + 1 Then MsgBox (该矩阵不可逆! Exit Functionthis: For j = 0 To 2 * m + 1 p = c(k, j) c(k, j) = c(i, j) c(i, j) = pa
13、b = 1# / c(k, k)For j = 0 To 2 * m + 1 c(k, j) = c(k, j) * abFor i = 0 To n If i k Then If j c(i, j) = c(i, j) - c(i, k) * c(k, j) c(i, k) = 0 For j = 0 To m a(i, j) = c(i, j + n + 1) a(i, j) = Round(a(i, j), 4)qiuni = a四实验结果图五实验总结 此次实验让我深入了解单点定位的计算过程,加强了对单点定位基本公式和误差方程式,法线方程式的记忆。并通过上机调试程序加强了自己动手能力的培养。通过此次实验为以后的GPS的学习打下了基础。
copyright@ 2008-2022 冰豆网网站版权所有
经营许可证编号:鄂ICP备2022015515号-1