matlab运行RTKDEMO几个小函数

2023-05-16

一、matlab函数:

1、datenum() :

将时间点转换为0000年1月0日到现在的天数!其中起点为:0000年1月0日

 例如:

K>> t0=datenum(2005,4,2,0,0,0)
t0 =
      732404

K>> t0=datenum(2005,4,2,12,0,0)
t0 =
                  732404.5

K>> t0=datenum(2005,4,2)
t0 =
      732404

2、unique():

用法1:[C,ia,ic]=unique(A,'rows');

Define a matrix with a repeated row.

A = [9 2 9 5; 
     9 2 9 0; 
     9 2 9 5];
Find the unique rows of A and the index vectors ia and ic, such that C = A(ia,:) and A = C(ic,:).
%按照‘行’顺序,进行排序,
% 1、两行作比较,如两行前几个为相同的元素,从左到右依次比较;
% 2、结果按升序排列;
[C, ia, ic] = unique(A,'rows')
C =

     9     2     9     0
     9     2     9     5
% ia为 矩阵C中元素在矩阵A中的位置
ia =

     2
     1
% ic为 矩阵A中元素在矩阵C中的位置
ic =

     2
     1
     2

其中在代码实现时,用法如下:

  • 按照‘rows’/行 ,升序排序;
  • n为升序后的矩阵,i为矩阵n中元素("行"为一个元素)在矩阵nav(:,1:33)中的位置;
  • 如果有同样的元素,则删去;
[n,i]=unique(nav(:,1:33),'rows'); 
nav=nav(i,:); 
inav=inav(i,:);

参考:matlab中的unique函数详解

3、sortrows():

用法1:[B,i]=sortrows(A)

表示:对矩阵A中的行元数进行大小比较,如果每行中第一列元素相等,则比较第二列……/从左向右,一次比下去;

i为排序后的矩阵B中行元素在矩阵A中的位置:

示例如下:

 A =[95    45    92    41    13     1    84
    95    45    92    41    13     1    84
    95     7    73     5    19    44    20
    95     7    40    35    60    93    67
    76    61    93    81    27    46    83
    76    79    91     0    19    41     1];

[B,i]=sortrows(A)

在代码中,其实现和功能为:将移动站和基准站相同历元观测到的相同卫星进行1、2标识。

[iobs,i]=sortrows(iobs); obs=obs(i,:);

二、readrnx 函数:

% read RINEX observation data/navigation messages  观测数据 导航电文
[obs,iobs,nav,inav]=readrnx(t0,time(1),time(end),files); % iobs中 rover:1,ref.:2

读取文件依次为:流动站观测文件、基准站观测文件;流动站导航文件、基准站导航文件;

输出矩阵:

1、obs iobs

obs为按照数据类型:'L1','L2','C1','P2';输出的数据;

其中第一行为流动站第一个历元数据;第二行为基准站第一个历元数据;

iobs:第一列为历元时间,第二列为卫星号,第三列为:1/rover和2/base

2、nav inav

nav: 基准站和移动站导航电文,经过unique处理后(即:按照时间的升序),删除重复的导航电文信息;

inav:导航电文的卫星号;

三、rtkdemo()

[xp,xs,xf]=rtkdemo(t0,time,rref,obs,iobs,nav,inav,mode)

函数说明/处理策略:

  • 取第一个历元,高度角最大的卫星为参考卫星;
  • 利用L1频点的双差载波对EKF状态量进行更新;
  • 通过LAMBDA/MLAMBDA方法求解模糊度;
  • 对于周跳和粗差不处理;

1、流动站单点定位计算:

计算出流动站坐标、高度角最大卫星;

[rr,t,sat,dop]=pointp(t0,obsk,iobsk,nav,inav);

2、EKF的时间更新:

[x,P]=udstate(sref,sats,x,P,rr(:,1),obsk,iobsk,mode,lam);

状态量:单点定位坐标、双差模糊度(载波双差-伪距双差/lam)/cycle

其中,双差模糊度噪声设置为:10厘米

状态协方差矩阵P为对角阵,且P=Q.^2

3、L1频段载波双差测量值、双差预测值:

(1)L1频段双差载波测量值:y为载波相位双差值!

y=lam*obs_dd(sref,sats,obsk,iobsk,1);%L1双差,单位:米/m

(2)测量模型:

h为伪距双差值+模糊度(单位:mi);其中,移动站坐标是每一个历元通过单点定位得到。即双差预测值

H为设计矩阵;

R为模糊度噪声;单位:m/米

[h,H,R]=measmodel(t0,t(1),t(2),x(1:3),rref,x(4:end),sref,sats,nav,inav,lam);

4、kalman测量更新:

% measurement update of states -------------------------------------------------
function [x,P]=filt(x,P,y,h,H,R)
i=find(~isnan(y)&~isnan(h)); H=H(i,:);
K=P*H'/(H*P*H'+R(i,i));
x=x+K*(y(i)-h(i));
P=P-K*H*P;

5、模糊度固定:

 

% ambiguity resolution ---------------------------------------------------------
function x=fixamb(x,P);
i=1:3; j=4:length(x); 
j=j(~isnan(x(j))&diag(P(j,j))<10^2);
[N,s]=mlambda(x(j),P(j,j),2);
if isempty(N)|s(2)/s(1)<3, x(:)=nan; return, end  % ratio-test
x([i,j])=[x(i)-P(i,j)/P(j,j)*(x(j)-N(:,1));N(:,1)];

 

四、plot_pos

 

 

 

 

 

 

 

 

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

matlab运行RTKDEMO几个小函数 的相关文章

  • 【编译人生】跨平台程序设计BOOST库以及编译方案的选择

    boost库很方便 xff0c 不用说 xff0c 下面是编译方法 xff0c 以WINDOWS平台为例 1 在 boost解压缩文件路径下 xff08 可能不同版本的路径位置build有所不同 xff09 cd d tools build
  • CAN总线的标准帧和扩展帧

    CAN总线的标准帧和扩展帧主要决定帧ID的长度 xff0c 标准帧的帧ID长度是11位 xff0c 帧ID的范围是000 7FF 扩展帧的帧ID长度是29位 xff0c 帧ID的范围是0000 0000 1FFF FFFF CANopen帧
  • CAN扩展帧详解

    寻址方式
  • linux 发送get/post请求

    目录 get post 43 json get curl location request GET 39 http xxxx param1 61 2027xxxx 39 url参数中涉及特殊字符的参数部分 需要转义 例如 curl 34 h
  • ROS -PCL程序包建立和CMakelist.txt修改

    一 创建工作空间 wtj 64 wtj echo ROS PACKAGE PATH wtj 64 wtj mkdir p dev catkin ws src wtj 64 wtj cd dev catkin ws src wtj 64 wt
  • jetson nano 供电模式的切换或自定义供电模式

    前言 xff1a jetson nano 开发板在预设的10W MAXN 模式下需要用5v4A的DC供电 用5v2A的DC或者micro usb供电建议使用5W模式 供电不足会导致掉电关机 以下是学习jetson nano时 xff0c 对
  • 自动驾驶之——CAN总线简介

    自动驾驶技术之 无人驾驶中的CAN总线 CAN 是Controller AreaNetwork 的缩写 xff0c 中文名为控制器局域网络 xff0c 是ISO国际标准化的串行通信协议 xff0c 是一种用于实时应用的串行通讯协议总线 xf
  • CMake中find_package()查找指定版本的库,以Qt库多版本共存为例

    Qt安装了多个版本时 xff0c CMake中写的find package 到底找到的是哪个库 xff1f 例如 xff0c 我电脑安装了两个版本的Qt xff0c 一个是5 12 3另一个是5 14 2 此时我的CMake如何指定使用哪个
  • 游戏中常用的寻路算法(6):地图表示

    在本系列文档大部分内容中 xff0c 我都假设A 用于某种网格上 xff0c 其中的 节点 是一个个网格的位置 xff0c 边 是从某个网格位置出发的各个方向 然而 xff0c A 可用于任意图形 xff0c 不仅仅是网格 xff0c 有很
  • Redis 官方可视化工具

    RedisInsight 是一个直观高效的 Redis GUI 管理工具 xff0c 它可以对 Redis 的内存 连接数 命中率以及正常运行时间进行监控 xff0c 并且可以在界面上使用 CLI 和连接的 Redis 进行交互 xff08
  • 一个注解搞定接口返回数据脱敏

    下午惬意时光 xff0c 突然产品小姐姐走到我面前 xff0c 打断我短暂的摸鱼time xff0c 企图与我进行深入交流 xff0c 还好我早有防备没有闪 xff0c 打开瑞star的点单页面 xff0c 暗示没有一杯coffee解决不了
  • 系统架构性能问题诊断及优化思路

    01 系统性能问题分析流程 我们首先来分析下如果一个业务系统上线前没有性能问题 xff0c 而在上线后出现了比较严重的性能问题 xff0c 那么实际上潜在的场景主要来自于以下几个方面 业务出现大并发的访问 xff0c 导致出现性能瓶颈 上线
  • 在Redis分布式锁上,栽的8个跟头

    在分布式系统中 xff0c 由于 redis 分布式锁相对于更简单和高效 xff0c 成为了分布式锁的首先 xff0c 被我们用到了很多实际业务场景当中 但不是说用了 redis 分布式锁 xff0c 就可以高枕无忧了 xff0c 如果没有
  • 牢记16个有用的 SpringBoot 扩展接口

    1 背景 Spring的核心思想就是容器 xff0c 当容器refresh的时候 xff0c 外部看上去风平浪静 xff0c 其实内部则是一片惊涛骇浪 xff0c 汪洋一片 Springboot更是封装了Spring xff0c 遵循约定大
  • ZYNQ研究----(3)7100 裸跑LWIP协议栈

    硬件环境 xff1a 创龙TLZ7XH EVM开发板 软件环境 xff1a VIVADO 2017 4 1 调用ZYNQ核 查开发板原理图 xff0c MIO16 27为以太网接口52 53为MDIO接口 xff0c 配置如下 使能串口1
  • SQL优化 20 连击

    一 查询SQL尽量不要使用select xff0c 而是具体字段 1 反例 SELECT FROM user 2 正例 SELECT id username tel FROM user 3 理由 节省资源 减少网络开销 可能用到覆盖索引 x
  • 对外 API 接口,请把握这3 条原则,16 个小点

    对外API接口设计 安全性 1 创建appid appkey和appsecret 2 Token xff1a 令牌 xff08 过期失效 xff09 3 Post请求 4 客户端IP白名单 xff08 可选 xff09 5 单个接口针对IP
  • 40 个 SpringBoot 常用注解:让生产力爆表!

    64 RequestMapping 64 RequestMapping注解的主要用途是将Web请求与请求处理类中的方法进行映射 Spring MVC和Spring WebFlux都通过RquestMappingHandlerMapping和
  • 分页 + 模糊查询 有坑!

    前言 不知道你有没有使用过Mysql的like语句 xff0c 进行模糊查询 xff1f 不知道你有没有将查询结果 xff0c 进行分页处理 xff1f 模糊查询 xff0c 加上分页处理 xff0c 会有意想不到的坑 xff0c 不信我们
  • Spring Boot + Netty + WebSocket 实现消息推送

    关于Netty Netty 是一个利用 Java 的高级网络的能力 xff0c 隐藏其背后的复杂性而提供一个易于使用的 API 的客户端 服务器框架 Maven依赖 lt dependencies gt lt https mvnreposi

随机推荐

  • isEmpty 和 isBlank 的用法区别

    也许你两个都不知道 也许你除了isEmpty isNotEmpty isNotBlank isBlank外 并不知道还有isAnyEmpty isNoneEmpty isAnyBlank isNoneBlank的存在 come on 让我们
  • 300万数据导入导出优化方案,从80s优化到8s

    前景 在项目开发中往往需要使用到数据的导入和导出 xff0c 导入就是从Excel中导入到DB中 而导出就是从DB中查询数据然后使用POI写到Excel上 写本文的背景是因为在工作中遇到了大数据的导入和导出 xff0c 问题既然来了逃跑不如
  • 快速定位 SpringBoot 接口超时问题的神器

    背景 公司有个渠道系统 xff0c 专门对接三方渠道使用 xff0c 没有什么业务逻辑 xff0c 主要是转换报文和参数校验之类的工作 xff0c 起着一个承上启下的作用 最近在优化接口的响应时间 xff0c 优化了代码之后 xff0c 但
  • 常用开源监控系统分析推荐

    摘要 xff1a 在互联网信息爆炸式快速发展的今天 xff0c 各类复杂多样的平台系统相继涌出 如何选择最佳的监控产品以更好地维护这些平台和系统是每个 IT 人员都需面临的难题 本文将从开源监控产品的起源和发展 xff0c 详细解析各个时代
  • 一个非常实用的分布式 JVM 监控工具

    介绍 该项目为了方便开发者更快监控多个远程主机jvm xff0c 如果你的项目是Spring boot那么很方便集成 xff0c jar包引入即可 xff0c 不是Spring boot也不用气馁 xff0c 你可以快速自行初始化一个Spi
  • 【Java】HttpRequest 获得请求的url进行判断

    一 span class token class name HttpRequest span 获得请求的url进行判断 request span class token punctuation span span class token f
  • 秒杀系统的思考

    极限并发带来的思考 虽然现在大多数情况下都能订到票 xff0c 但是放票瞬间即无票的场景 xff0c 相信大家都深有体会 尤其是春节期间 xff0c 大家不仅使用 12306 xff0c 还会考虑 智行 和其他的抢票软件 xff0c 全国上
  • 为什么禁止MyBatis批量插入几千条数据使用foreach?

    近日 xff0c 项目中有一个耗时较长的Job存在CPU占用过高的问题 xff0c 经排查发现 xff0c 主要时间消耗在往MyBatis中批量插入数据 mapper configuration是用foreach循环做的 xff0c 差不多
  • SpringBoot 那些天生自带 Buff 的工具类

    断言 断言是一个逻辑判断 xff0c 用于检查不应该发生的情况 Assert 关键字在 JDK1 4 中引入 xff0c 可通过 JVM 参数 enableassertions开启 SpringBoot 中提供了 Assert 断言工具类
  • SpringBoot四大核心组件

    前言 先透露一下 xff0c 四大组件分别是 xff1a starter xff0c autoconfigure CLI 以及actuator 下面我们就来详细介绍一些他们有什么用 一 Spring Boot Starter 1 1 Sta
  • 线上问题排查,这些命令你一定用得到!

    线上问题排查 xff0c 以下场景 xff0c 你遇到过吗 xff1f 一 了解机器连接数情况 问题 xff1a 1 2 3 4的sshd的监听端口是22 xff0c 如何统计1 2 3 4的sshd服务各种连接状态 TIME WAIT C
  • linux内核发包工具pktgen

    pktgen使用说明 内核路径 net core pktgen c 作者对于pktgen的介绍 xff1a 原作者编写的pdf介绍 pktgen c 原理介绍 pktgen运用了proc 文件系统特征来实现用户和内核的交互 xff0c 用户
  • 用css写进度条

    用css写进度条 我们平时写进度条一般是一个父div包裹一个子div xff0c 用js控制子div的宽度 实现进度条 xff0c 我们现在可以用css简单实现进度条了 代码如下 xff1a 在vue项目里咱们只需要控制数字就行了 xff0
  • SpringBoot集成SpringSecurity

    SpringSecurity 安全简介 在 Web 开发中 xff0c 安全一直是非常重要的一个方面 安全虽然属于应用的非功能性需求 xff0c 但是应该在应用开发的初期就考虑进来 如果在应用开发的后期才考虑安全的问题 xff0c 就可能陷
  • 【ElementUI】进度条 el-progress—进度圆环颜色、自定义文字

    圆环不显示 大概率是因为宽度没有设置 el progress width 100 圆圈背景色 lt el progress type 61 34 circle 34 percentage 61 34 20 34 class 61 34 pe
  • linux使用curl加双引号进行转义

    amp 是个特殊符号 xff0c 如果在控制台使用curl curl http 127 0 0 1 8089 ceshi startTime 61 2018 10 24 02 49 35 amp amp endTime 61 2018 10
  • qt程序的CMakeLists.txt配置转为平台的qt的.pro项目工程文件

    参考这个 跨平台qt程序的CMakeLists txt配置转为平台的qt的 pro项目工程文件 谁能懂我2011的博客 CSDN博客 一些比较正规的跨平台qt项目没有 pro项目文件只有CMakeLists txt文件 xff0c 如果要编
  • 单片机堆栈是什么?它的原理和作用又是什么?

    什么是单片机堆栈 xff1f 在片内RAM中 xff0c 常常要指定一个专门的区域来存放某些特别的数据 它遵循顺序存取和后进先出 LIFO FILO 的原则 这个RAM区叫堆栈 它的作用 子程序调用和中断服务时CPU自动将当前PC值压栈保存
  • IMU(陀螺仪、加速度计)&Magnetometer(磁力计)校准方法和流程

    一 何为校准 xff1a 校准的目的是因为厂商在生产器件时 xff0c 由于工艺 技术等原因 xff0c 致使器件存在缺陷 xff0c 导致实际应用时 xff0c 存在误差 xff01 一般器件在出厂时 xff0c 都会做一些校准处理 xf
  • matlab运行RTKDEMO几个小函数

    一 matlab函数 xff1a 1 datenum 将时间点转换为0000年1月0日到现在的天数 xff01 其中起点为 xff1a 0000年1月0日 例如 xff1a K gt gt t0 61 datenum 2005 4 2 0