Matlab 实现磁测数据日变改正

news2024/11/22 6:30:03

1 算法

算法来自于GEMLink 5.2的帮助文档,这个文档基本解决了算法问题。

GemLink日变改正模块界面 

1.1 概述

日变改正模块旨在执行磁力日变数据计算,而不用在仪器上进行日变(仪器是未经过校正的原始数据)。这个模块要求已经保存了Base和Rover文件,结果将另存为另外的文件,其中包含Rover文件的所有信息,以及附加在该行末尾的校正磁场值。

1.2 文件格式:

文件必须是ASCII文本文件。每行文本的末尾必须有一个CR(回车)或CRLF(回车/换行)。仅以LF终止的行不能使用,因为它们被视为一行。

字段或列之间的默认分隔符是SPACE。可以从“文件菜单”下的“字段分隔符”菜单中选择不同的分隔符。这个设置是临时的,每次GEMLinkW打开时,空格都是默认的分隔符。

注意,Base和Rover文件必须具有相同的分隔符。如果选择了不正确的分隔符,系统可能会产生意想不到的结果或错误。

1.3 时间戳:

自从GEMlinkW 2.4发布以来,日变改正模块在时间戳格式方面提供了更大的灵活性。Base和Rover文件接受以下24小时的时间戳格式:

  • HHMMSS;
  • HHMMSS.s;
  • HHMMSS.ss;
  • HHMMSS.sss;
  • HH: MM: SS;
  • HH: MM: SS.s;
  • HH: MM: SS;
  • HH:MM: ss.sss

不符合这些格式的条目将被拒绝。

此外,如果发现240000.0是表示午夜的时间戳,则将其视为000000.0。分和秒不能超过59。匹配这些格式,但hour、Minutes或Seconds值非法的条目也会被拒绝。

1.4 时间转换

为了便于比较时间值,所有时间都通过简单的小时、分钟、秒和秒的分数加权相加转换为十分之一秒(1/10秒)。

虽然小数点后三位的时间戳也被接受,但时间只与十分之一秒进行比较。小数点后第2位和第3位将被丢弃,不进行舍入。

时间戳0 =< |日变站时间-移动站时间|<= 0.099秒被认为是相等的。

1.5 同步问题

当然,为了进行日改,日变站和移动站必须在测量前进行时间同步。如果两个设备都配备了GPS,它们会自动同步到UTC,因此它们的读取周期由GPS定时控制。如果只有一台设备配备了GPS,您可能希望将该设备同步到UTC,然后使用同步电缆将UTC时间传输到另一台设备。如果没有一台设备配备GPS,在其中一台设备上手动设置时间,并使用同步电缆将时间传输到另一台设备上。

事实上,野外都是手动进行同步的,而且同步引起的误差很小。

1.6 日期

本程序不检查文件的日期。用户自己确保两个文件都是同一天就行。

文件时间不能超过午夜,因为程序并没有识别这种情况的功能。

1.7 未修正行的包含

如果在“日变改正”工具对话框中选中“包括未修正的行”(默认),系统将存储无法修正的数据行而不作任何更改。结果是一个包含移动站所有读数的文件,然而,只有经过校正的行才会显示在行末附加的日改校正的磁场值。

如果选中“舍弃未更正的行”选项,则结果文件只包含已成功更正的行。

1.8 使用说明

打开Base或Rover的文件后,会弹出“设置”对话框。对话框里会显示文件的前50行,以验证是否为正确的文件。

然后,程序会检查所打开的文件,确定首行和尾行。首行定义为长度相同的3行中的第一行。尾行被定义为与首行具有相同长度和数量的字段分隔符的最接近文件末尾的行。

第一行数据将根据当前字段分隔符设置进行解析,并将值传递给Time和Magnetic field下拉菜单。下拉框的值用于确定行中每个字段的位置及其格式。

除了作为选项(来自首行数据)显示的值之外,不可能选择其他值。如果遇到其他值,您将看到一条错误消息。如果未使用选定的字段分隔符分隔行字段,则日变改正计算可能发生错误。

可以任意在Rover或Base设置窗口中输入基准值datum。

当准备好开始计算时(即当两个文件都打开时),在“日变改正”对话框中按下“correct”按钮。

程序首先检查文件以确定它们是否有相同的读数。如果两个文件从开始到结束的时间间隔不重叠,则无法进行更正,进程将停止。

同样,请记住,文件只根据时间进行比较,日期不被考虑在内。确保两个文件都是同一天。

从Rover文件的第一行数据中提取的时间与Base文件的时间进行比较。

如果移动站的时间不是一个共同的读数(即它的时间不在重叠的时间间隔内),则根据'Include' 'Discard'选项的设置,数据线要么不受影响地传递,要么被丢弃。

如果时间经检验后没问题,则通过以下两种方式之一进行修正:

(1)如果在Base文件中找到了完全相同的时间,那么磁场修正的计算方式为:

改正值Corrected Value = 移动站值Rover Field - 日变站值Base Field + 基准值Datum

修正后的值被附加在移动站的数据行的末尾,这条线将被标记为“i——”

(2)如果时间不完全匹配,则从Base文件的最近时间读数线性插值Base值。修正后的值被计算为:

改正值Corrected Value = 移动站值Rover Field - 插值后的日变站值Interpolated Base Field + 基准值Datum

为衡量计算结果准确度,用于插值的基线的时间间隔(以秒为单位)也添加在该行的末尾。例如,从间隔5秒的基本读数插入的校正字段将被标记为“i005”。

如果时间间隔超过999秒,该行将被标记为“i+++”。

对移动站的所有行都执行相同的计算,直到所有行都被校正完。

Rover文件中的无效数据行(例如位置标签、注释、不包含有效时间格式或数值分隔符的行)将不做任何改动的传递给新文件。如果该行包含有效的时间,但其中一些值不能提取,则会发出警告,显示无效的行,并且该行将传递给标记为“Error”的最终文件。

GEMLinkW的以前版本对日变文件中的无效数据行容忍度较低。但是,从GEMLnkW 2.4开始,您现在会收到一条显示无效行消息的警告,该过程将继续使用下一个有效行。为了避免看到这些消息,我们建议您不要手动编辑这些文件(意思就是说,从仪器导出来的文件不要编辑,否则可能会编辑错而导致出现错误的改正信息)。

在文件被改正完后,一个摘要消息显示了以下几项内容的改正量:

  • 直接纠正个数
  • 使用插值修正的个数
  • 不纠正的个数。

还会显示格式正确但数字不合法的时间戳的数量,例如Hours、Minutes或Seconds(如果有的话)。

您可以通过这些信息来检查和修改文件。但是,您必须首先确定非法条目位于哪个文件中,以及它们在文件中的位置。如果错误时间来自Rover文件,那么它将在结果文件中标记为“****”。结果文件末尾也插入了相同的摘要信息。

在日变改正计算期间,改正值存储在一个名为dummy的,后缀为.dmy的临时文件中。即使发生严重错误,也会保存此文件。

要恢复到目前为止已更正的数据,您应该打开位于安装GEMLinkW的文件夹中的dummy文件。当开始新的计算时,Dmy文件将被覆盖,且不会发出警告(这样你就没法恢复之前的校正数据了)。

1.9 保存数据:

退出程序时,会要求您保存最终文件。这个过程只是将dummy文件重命名为您选择的路径和文件名。在保存时发生错误时(例如,当路径或驱动器不可用时),程序将显示一条消息,指示您合并的数据在dummy文件中仍然可用,并显示其位置。如果您决定取消并退出而不保存/重命名文件,虚拟文件将保持完整。

注意,其他一些GEMLinkW工具,如合并实用程序(GPSmerge),使用相同的dummy.dmy文件。你应该保存或重命名文件,以避免丢失数据。

2 实现

(1)输入日变站数据,由于格式固定,跳过分列操作,base_data

(2)输入移动站数据,由于格式固定,跳过分列操作,rover_data

(3)输入基准值datum

(4)选择是否包含未改正行non_cor_included,默认为true

(5)选择插入列号insert_col,默认为1

(6)指定输出文件名

(7)比较移动站和日变站的日期,如果不一致则报错退出。

(8)循环读取移动站的每1行,先从第1行开始;

(9)查找第1个大于移动t的日变t的前1位;

(10)若该位小于1,则不改正,根据non_cor_included值决定是否原样输出,且未修改计数+1;

(11)比较此时日变站时刻和移动站时刻,若相差小于0.099,则用第1公式计算,计数+1;

(12)根据non_cor_included值决定是否原样输出;

(13)若大于0.099,则用第2公式计算,计数+1;

(14)根据non_cor_included值决定是否原样输出;

(15)循环往复,把移动站每一行都计算完毕,最后输出3行改正信息。

3 效果分析

用该程序计算,所得结果与Gemlink相比,大部分数据一致,只有少部分数据在小数点第2位相差1,估计为截断误差造成,此误差不会对结果造成不良影响,程序可用。

测试数据展示。

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/115356.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

[ CTF ] WriteUp-2022年春秋杯网络安全联赛-冬季赛

没啥时间打比赛就大概看了一下做了几题 文章目录[Misc] reindeer game[Misc] 调查问卷[Web] ezphp[Misc] reindeer game ​ 这题最简单的方法就是玩游戏了&#xff0c;然后直接出flag flag{82a2acb6-9803-4936-92db-f1431d90c6d1} [Misc] 调查问卷 flag{the_harder_u_struggl…

故事的开始:RaidAI

目录引言RapidAI/RapidOCRRapidAI/YOLO2COCORapidOcrAndroidOnnxRapidAI/RapidOcrNcnnRapidAI/PaddleOCRModelConverterRapidAI/RapidTTSRapidAI/RapidASRRapidAI/RapidPix2Pix引言 RapidAI是一个将AI模型应用到工程中的开源组织&#xff0c;致力于搭建AI模型从学术界到工程界…

RabbitMQ:消息分发模型

Work queues&#xff0c;也被称为 Task queues&#xff0c;任务模型&#xff0c;当消息处理比较耗时时的时候&#xff0c;可能产生消息的速度会远远大于消息的消费速度&#xff0c;消息会堆积越来越多&#xff0c;无法及时处理&#xff0c;此时就可以使用work模型&#xff1a;让…

圣诞的荒诞小故事并记录互联网协议-五层模型

今天敲代码敲着敲着灵光乍现&#xff0c;突然一个荒诞的故事&#x1f4a1;映入脑海。 1.未来和过去&#xff1a; 人高度发达&#xff08;以下称之为渡&#xff09; 渡可以打开时空穿越过去&#xff08;以下称之为旧迹&#xff09;&#xff0c;并且可以进随心所欲的来去自如&a…

【微服务】Nacos的寻址机制

目录 一、 Nacos的寻址机制 1、前提 2、设计 3、内部实现 3.1、单机寻址 3.2、文件寻址 3.3、地址服务器寻址 4、未来可扩展点 4.1、集群节点自动扩缩容 &#x1f496; Spring家族及微服务系列文章 一、 Nacos的寻址机制 1、前提 Nacos 支持单机部署以及集群部署&am…

xxl-job基本原理以及底层流程讲解

任务执行策略 任务阻塞策略 整体架构部署 这里主要讲解下每个模块的作用 调度模块&#xff1a;负责管理调度信息&#xff0c;按照调度配置发出调度请求&#xff0c;自身不承担任何业务代码。调度系统于任务解耦&#xff0c;提高了系统可用性和稳定性&#xff0c;同时调度系统性…

MFC工程的文件说明

工程创建 使用VS创建一个MFC的工程&#xff0c;这里不做说明 文件说明 使用VS创建好的MFC工程有如下文件&#xff1a; MFC全称Microsoft Foundation Classes&#xff0c;也就是微软基础类库;是VC的核心&#xff0c;是C与Windows API的结合&#xff0c;很彻底的用C封装了Win…

这个医生说的防疫措施,我挺认可的

上面那个语音是一个朋友发给我的&#xff0c;语音时间比较长&#xff0c;但是里面讲的很多内容我觉得挺不错的&#xff0c;现在疫情反复&#xff0c;我们会听到很多关于疫情的信息&#xff0c;有的人说奥密克戎感染性很强&#xff0c;之前专家说的无症状是骗人的&#xff0c;根…

元宇宙产业委联席秘书长叶毓睿:去中心化和去中介化的定义、区别,以及和元宇宙的关系

原创 Peter Ye 转自&#xff1a;乐生活与爱IT Plus 近日有个有关元宇宙的线上分享&#xff0c;有位名叫谢晓雪的听众提了一个我之前没思考过的问题&#xff1a;去中心化和去中介化的区别&#xff1f; 当时我回答了一部分&#xff0c;但主要是讲的之间的联系&#xff0c;区…

【年终总结】求职面试一定要扬长避短

时光荏苒&#xff0c;这周日就是元旦了&#xff0c;我也把年终总结提上了日程。 前言 今年的年终总结我打算多写几篇&#xff0c;每篇瞄准一个方向&#xff0c;写一些对大家有帮助、有启发的内容。 初步的想法会整理三篇&#xff1a; 第一篇分享求职面试的经验第二篇分享接私…

Mybaits(环境搭建和基本使用)

目录   一、什么是 Mybaits   二、配置环境     2.1 导入 MyBatis Framework     2.2 连接 MyBatis   三、增删改查功能     3.1 创建实体类     3.2 select     3.3 delete 和 update     3.4 insert   四、SQL 注入     4.1 什么是 SQL…

2022年终总结、展望2023

2022年终总结、展望2023前言一、2022年工作成绩二、2022年工作不足即如何改进三、可以传承的工作方法或者经验四、2023年工作目标 &#xff08;目标细化、可落地&#xff09;<font colorred> 1、薪资待遇2、云端高效的实时智能视频处理平台架构图3、 云端高效的实时智能视…

Redis从部署群集到ASK路由

目录 数据库简介 一、数据库分类 二、Redis重要特性 三、redis应用场景 安装redis redis基本命令 redis持久化 redis主从复制 redis集群 群集实施 配置节点发现 Redis Cluster 通讯流程 Redis Cluster手动分配槽位 Redis Cluster ASK路由介绍 模拟故障转移 自动搭建部署Redis C…

前缀.因式分解.求和 .C

前缀和:在输入同时获得结果. s[i]s[i-1]input(a[i]). 区间和:前缀做差 Sum[A,B]s[B]-s[A-1]. for(i1,i<n,i){ input(a[i]); s[i]s[i-1]input(a[i]). input(a,b); counts[b]-s[a-1]; } 分解伪代码 Sa2*a1a3*(a2a1)a4*(a3a2a1)a5*(a4a3a2a1) 因式分解复杂度on; >&g…

一文告诉你如何选择低代码供应商?

低代码&#xff08;零代码&#xff09;软件平台、套件、工具和相关服务正在快速地广泛普及和扩展。现在许多人都知道&#xff0c;低代码软件解决方案提供的加速器和自动化&#xff0c;可以加速软件应用程序开发人员的工作……这就意味着&#xff08;在这个开发人员匮乏的星球上…

动态规划算法典型例题

这里写目录标题1、动态规划算法2、动态规划&分治3、动态规划算法典型例题3.1选数问题3.1.1递归解法3.1.2动态规划解法3.2最长公共子序列3.3钢条切割问题3.3.1递归解法3.3.2动态规划解法3.4斐波那契数列3.4.1递归解法3.4.2递归解法3.5背包问题&#xff08;0-1背包&#xff0…

SRS服务器搭建以及展现配置说明

对于企业而言&#xff0c;数字化建设是一项全面的、系统的工程&#xff0c;不仅仅只是部署几套软件、实现办公自动化而已&#xff0c;尤其是大型企业&#xff0c;数字化的建设往往涉及到了服务器、硬件、软件、网络等一系列内容。如门禁系统和人力、认证等系统集成&#xff0c;…

计算机视觉与图形学-神经渲染专题-非刚体NeRF II

《TiNeuVox:Fast Dynamic Radiance Fields with Time-Aware Neural Voxel》链接&#xff1a;https://jaminfong.cn/tineuvox/摘要作者通过表示具有时间感知体素特征的场景提出了一个辐射场框架&#xff0c;并将其命名为 TiNeuVox。作者引入了一个微小的坐标变形网络来模拟粗略的…

Flink-使用合流操作进行实时对账需求的实现

学Flink第八章多流转换的时候&#xff0c;进行合流操作.connect()使用到了第九章状态编程的知识&#xff0c;感觉总体不是很清晰&#xff0c;因此学完状态编程后现在进行重温并细化一些细节 业务背景 步骤一&#xff1a; 用户进行支付的时候&#xff0c;后台是需要调用第三方…

leetcode 834. Sum of Distances in Tree(树中的距离和)

无向连接的树&#xff08;不一定是二叉树&#xff09;&#xff0c;求每个节点到其他节点的距离和。 返回一个数组&#xff0c;数组的第i个元素就是第i个节点到其他所有节点的距离之和。 思路&#xff1a; 涉及无向图的构造和遍历&#xff0c;树的前序后序遍历&#xff0c;问题…