最小二乘法 c语言实现线性,matlab进行拟合及

熊志强+肖腾飞

摘 要:对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 二次曲面拟合,利用MATLAB结合C语言实现GPS高程二次曲面拟合相关推荐

  1. 用MATLAB编程正弦稳态相量图,matlab课程设计--利用MATLAB对线性电路正弦稳态特性分析...

    matlab课程设计--利用MATLAB对线性电路正弦稳态特性分析 课程设计任务书 学生姓名: 专业班级: 指导教师: 刘 新 华 工作单位:信息工程学院 题 目: 利用MATLAB对线性电路正弦稳态 ...

  2. 基于matlab的绘图设计,matlab课程设计---利用MATLAB仿真软件进行绘图

    matlab课程设计---利用MATLAB仿真软件进行绘图 课程设计任务书课程设计任务书 题题 目目 利用利用 MATLABMATLAB 仿真软件进行绘图仿真软件进行绘图 初始条件初始条件 仿真软件 ...

  3. matlab 多普勒效应,《利用MATLAB仿真多普勒效应.doc

    <利用MATLAB仿真多普勒效应 利用MATLAB仿真多普勒效应 某某某 摘 要:分析多普勒效应特性,建立数学模型,利用MATLAB软件对其进行仿真试验,进行定量分析,根据仿真试验结果绘制出听者 ...

  4. matlab segy文件,利用matlab实现segy格式数据的读写研究和分析.ppt

    利用matlab实现segy格式数据的读写研究和分析 2.SEGY数据格式 地震数据一般以地震道为单位进行组织,采用SEG-Y文件格式存储.SEG-Y格式是由SEG (Society of Explo ...

  5. matlab ann-bp分类器,利用matlab真的BP-ANN分类器设计.doc

    利用matlab真的BP-ANN分类器设计,ann分类器,bp神经网络分类器,bp分类器,贝叶斯分类器matlab,svm分类器matlab程序,matlab分类器,matlab分类器工具箱,soft ...

  6. matlab负荷分配程序,利用MATLAB工具箱进行机组负荷优化分配

    火电厂利用负荷优化分配算法,在全厂机组组合方式一定的情况下,根据各运行机组的煤耗特性,合理分配机组所带负荷,可以使全厂总的煤耗量最小[1],从国内外调度经验可知,热效率可提高1%~2.5%.优化算法代 ...

  7. matlab 提取极值,利用matlab 进行极值统计的一个例子——gev 方法.pdf

    利用matlab 进行极值统计的一个例子--gev 方法 利用 Matlab 进行极值统计的一个例子--GEV 方法 科研菜鸟 /u/sanshiphy 数据和例子均来自于 S. Coles, An ...

  8. matlab磁场计算公式,利用MATLAB计算电磁场有关分布.doc

    利用MATLAB计算电磁场有关分布 电磁场实验报告 实验一 模拟电偶极子的电场和等位线 学院:电气工程及其自动化 班级: 学号: 姓名: 实验目的:了解并掌握MATLAB软件,熟练运用MATLAB语言 ...

  9. 用matlab实现循环卷积,利用matlab实现循环卷积.doc

    利用matlab实现循环卷积.doc 1.实验目的1利用MATLAB实现循环卷积.2比较循环卷积与线性卷积的区别.二.实验条件PC机,MATLAB703.实验内容1)循环卷积的定义两个序列的N点循环卷 ...

最新文章

  1. c语言:找出1到4000中,数字的各位数之和能被4整除的数有多少个?
  2. visual studio安装python插件_Visual Studio 2012 Ultimate 上安装 Python 开发插件 PTVS
  3. 二叉树展开为链表—leetcode114
  4. getexternalfilesdir 相册_音乐相册(电子相册制作)V5.2 安卓最新版
  5. OpenWrt 之 MT7628 移植第三方SPI驱动
  6. ios学习之UITabBar(标签栏)
  7. eclipse项目一直显示有错,但是一直找不到错误在哪里
  8. django+xadmin在线教育平台(十二)
  9. MyBatis使用,MyBatis单独使用笔记
  10. [HTML5]使用Box2dWeb模拟飞行箭矢
  11. 博客系统php源码,tjheer博客系统php版 v1.10
  12. 毕设 JAVA.JSP酒店管理系统论文
  13. python画图-python绘图入门(完整版)
  14. Decision Tree决策树
  15. 珠联网络棋牌游戏 v2.95a 官方
  16. xxx 用户不再sudoer 文件中 此事将被报告。
  17. 开发一个app,需要申请哪些,费用是多少?
  18. 2012年中国本土IC设计企业排名TOP10
  19. Java Cache 缓存方案详解及代码-Ehcache
  20. 三十八、C++ 信号捕获

热门文章

  1. 企业如何利用大数据做好大数据分析?
  2. 让供应链更智慧,让零售更无界
  3. 如何在淘宝发起知识产权投诉?
  4. java ssh 超时时间,Java Ganymed Trlead Orion ssh会话超时
  5. PHP医院网络预约管理系统源码,医院咨询预约登记OA系统(可商用也可作毕业设计)
  6. 项目展示: 道路车辆状态的识别
  7. linux 进入其他磁盘分区,Linux磁盘分区,及磁盘的其他操作
  8. Android的JSON解析(上)
  9. npm下载量破 3.94亿次,Bootstrap 发布十周年
  10. 计算机考研英语有听力吗,考研英语试题题型里面有听力吗