m基于MATLAB-GUI的GPS数据经纬度高度解析与kalman分析软件设计

本文涉及的产品
全局流量管理 GTM,标准版 1个月
云解析 DNS,旗舰版 1个月
公共DNS(含HTTPDNS解析),每月1000万次HTTP解析
简介: m基于MATLAB-GUI的GPS数据经纬度高度解析与kalman分析软件设计

1.算法概述

   经度纬度和高度来自GPS信号的中的GPGGA的数据。所以提取这三个信息主要是对GPGGA中的数据进行整理。GPGGA的数据格式如下所示:

1.png
2.png

   GPGGA是GPS数据输出格式语句,意思是一帧GPS定位的主要数据,是NMEA格式中使用最广的数据之一。该语句包括17个字段。

   $GPGGA 语句包括17个字段:语句标识头,世界时间,纬度,纬度半球,经度,经度半球,定位质量指示,使用卫星数量,HDOP-水平精度因子,椭球高,高度单位,大地水准面高度异常差值,高度单位,差分GPS数据期限,差分参考基站标号,校验和结束标记(用回车符<CR>和换行符<LF>),分别用14个逗号进行分隔。

    Kalman滤波是在时域上运用状态空间,递推得到的一种滤波算法,便于在计算机上实时实现,计算量和存储量小。该方法可处理多变量非平稳随机过程滤波问题,可处理时变系统滤波问题。例如飞机在飞行过程中,遇到的干扰通常是时变非平稳的噪声,此时运用卡尔曼滤波可有效去除干扰,得到较真实的状态估计数据。

   卡尔曼滤波是一种利用线性系统状态方程,通过系统输入输出观测数据,对系统状态进行最优估计的算法。由于观测数据中包括系统中的噪声和干扰的影响,所以最优估计也可看作是滤波过程。kalman是跟踪算法的“hello world”,在当前深度学习跟踪算法遍地的情况下,kalman跟踪效果确实差强人意。但是在实际产品落地时,特别硬件不是很强大、场景不复杂的情况下,kalman还是性价比最高的。

   Kalman滤波分为2个步骤,预测(predict)和校正(correct)。预测是基于上一时刻状态估计当前时刻状态,而校正则是综合当前时刻的估计状态与观测状态,估计出最优的状态。预测与校正的过程如下:

预测:

3.png

校正:

4.png

   公式1是状态预测,公式2是误差矩阵预测,公式3是kalman增益计算,公式4是状态校正,其输出即是最终的kalman滤波结果,公式5是误差矩阵更新。各变量说明如下表:

5.png

2.仿真效果预览
matlab2022a仿真

6.png
7.png
8.png
9.png

3.MATLAB部分代码预览

clear;
close all;
warning off;
 
 
DATA_TYPE = 'GPGGA';%选择需要保持的数据类型
fidin     = fopen('data.txt','r');
%读取数据
tline = func_GPS_read(fidin);
 
%数据中的GPGGA部分的数据进行保存,其余数据去除,在实际中,你也可以改变下面的参数,选择其他数据
Save_data = func_save_usefull_data(tline,DATA_TYPE);
 
 
%提取维度
%数据读取
Dimensions = func_read_Dimensions(Save_data);
%去掉数据中的0值
Dimensions(find(Dimensions == 0)) = [];
%卡尔曼滤波
Dimensions_kalman = func_kalman(Dimensions);
 
figure;
subplot(211);plot(Dimensions);title('维度');
subplot(212);plot(Dimensions_kalman);title('维度kalman');
xlabel('times');
ylabel('Dimensions');
%提取经度
%数据读取
longitude = func_read_longitude(Save_data);
%去掉数据中的0值
longitude(find(longitude == 0)) = [];
%卡尔曼滤波
longitude_kalman = func_kalman(longitude);
 
figure;
subplot(211);plot(longitude);title('经度');
subplot(212);plot(longitude_kalman);title('经度kalman');
xlabel('times');
ylabel('longitude');
 
 
 
%提取高度
%数据读取
Height = func_read_Height(Save_data);
Height(find(Height == 0)) = [];
%卡尔曼滤波
Height_kalman = func_kalman(Height);
 
 
figure;
subplot(211);plot(Height);title('高度');
subplot(212);plot(Height_kalman);title('高度kalman');
xlabel('times');
ylabel('Height');
01_047_m
相关文章
|
21小时前
|
设计模式 Java 程序员
【23种设计模式·全精解析 | 概述篇】设计模式概述、UML图、软件设计原则
本系列文章聚焦于面向对象软件设计中的设计模式,旨在帮助开发人员掌握23种经典设计模式及其应用。内容分为三大部分:第一部分介绍设计模式的概念、UML图和软件设计原则;第二部分详细讲解创建型、结构型和行为型模式,并配以代码示例;第三部分通过自定义Spring的IOC功能综合案例,展示如何将常用设计模式应用于实际项目中。通过学习这些内容,读者可以提升编程能力,提高代码的可维护性和复用性。
【23种设计模式·全精解析 | 概述篇】设计模式概述、UML图、软件设计原则
空心电抗器的matlab建模与性能仿真分析
空心电抗器是一种无铁芯的电感元件,通过多层并联导线绕制而成。其主要作用是限制电流、滤波、吸收谐波和提高功率因数。电抗器的损耗包括涡流损耗、电阻损耗和环流损耗。涡流损耗由交变磁场引起,电阻损耗与电抗器半径有关,环流损耗与各层电流相关。系统仿真使用MATLAB2022a进行。
|
1月前
|
数据采集 自然语言处理 搜索推荐
基于qwen2.5的长文本解析、数据预测与趋势分析、代码生成能力赋能esg报告分析
Qwen2.5是一款强大的生成式预训练语言模型,擅长自然语言理解和生成,支持长文本解析、数据预测、代码生成等复杂任务。Qwen-Long作为其变体,专为长上下文场景优化,适用于大型文档处理、知识图谱构建等。Qwen2.5在ESG报告解析、多Agent协作、数学模型生成等方面表现出色,提供灵活且高效的解决方案。
155 49
|
25天前
|
测试技术 开发者 Python
使用Python解析和分析源代码
本文介绍了如何使用Python的`ast`模块解析和分析Python源代码,包括安装准备、解析源代码、分析抽象语法树(AST)等步骤,展示了通过自定义`NodeVisitor`类遍历AST并提取信息的方法,为代码质量提升和自动化工具开发提供基础。
40 8
|
23天前
|
调度 开发者
核心概念解析:进程与线程的对比分析
在操作系统和计算机编程领域,进程和线程是两个基本而核心的概念。它们是程序执行和资源管理的基础,但它们之间存在显著的差异。本文将深入探讨进程与线程的区别,并分析它们在现代软件开发中的应用和重要性。
41 4
|
22天前
|
XML JSON JavaScript
HttpGet 请求的响应处理:获取和解析数据
HttpGet 请求的响应处理:获取和解析数据
|
20天前
|
算法 数据安全/隐私保护
数字通信中不同信道类型对通信系统性能影响matlab仿真分析,对比AWGN,BEC,BSC以及多径信道
本项目展示了数字通信系统中几种典型信道模型(AWGN、BEC、BSC及多径信道)的算法实现与分析。使用Matlab2022a开发,提供无水印运行效果预览图、部分核心代码及完整版带中文注释的源码和操作视频。通过数学公式深入解析各信道特性及其对系统性能的影响。
|
1月前
|
数据采集 存储 自然语言处理
基于Qwen2.5的大规模ESG数据解析与趋势分析多Agent系统设计
2022年中国上市企业ESG报告数据集,涵盖制造、能源、金融、科技等行业,通过Qwen2.5大模型实现报告自动收集、解析、清洗及可视化生成,支持单/多Agent场景,大幅提升ESG数据分析效率与自动化水平。
104 0
|
4月前
|
安全
【2023高教社杯】D题 圈养湖羊的空间利用率 问题分析、数学模型及MATLAB代码
本文介绍了2023年高教社杯数学建模竞赛D题的圈养湖羊空间利用率问题,包括问题分析、数学模型建立和MATLAB代码实现,旨在优化养殖场的生产计划和空间利用效率。
225 6
【2023高教社杯】D题 圈养湖羊的空间利用率 问题分析、数学模型及MATLAB代码
|
4月前
|
存储 算法 搜索推荐
【2022年华为杯数学建模】B题 方形件组批优化问题 方案及MATLAB代码实现
本文提供了2022年华为杯数学建模竞赛B题的详细方案和MATLAB代码实现,包括方形件组批优化问题和排样优化问题,以及相关数学模型的建立和求解方法。
141 3
【2022年华为杯数学建模】B题 方形件组批优化问题 方案及MATLAB代码实现

热门文章

最新文章

推荐镜像

更多