当前位置: 首页 > news >正文

平方根无迹卡尔曼滤波(SR-UKF)的MATLAB例程,使用三维非线性的系统

在这里插入图片描述

本MATLAB 代码实现了平方根无迹卡尔曼滤波(SR-UKF)算法,用于处理三维非线性状态估计问题

文章目录

  • 运行结果
  • 代码概述
  • 代码

运行结果

三轴状态曲线对比:
在这里插入图片描述

三轴误差曲线对比:
在这里插入图片描述
误差统计特性输出(命令行截图):

在这里插入图片描述

代码概述

  1. 初始化

    • 清空工作区和命令窗口,关闭所有图形窗口。
    • 定义时间序列 t 和设置过程噪声、观测噪声的协方差矩阵 (QR)。
    • 初始化状态估计协方差矩阵 P0 和状态向量 X,同时定义观测值 Z
  2. 运动模型

    • 使用循环生成真实状态 X 和未滤波状态 X_,根据给定的运动模型更新状态。
    • 生成观测值 Z,包含加入的观测噪声。
  3. 平方根UKF实现

    • 初始化滤波器的状态和协方差矩阵。
    • 在每个时间步 k 中:
      • 生成 sigma 点并计算它们的权重。
      • 对 sigma 点进行预测,计算新的状态和观测值。
      • 更新状态估计和协方差矩阵,使用卡尔曼增益结合观测更新状态。

在这里插入图片描述

  1. 结果绘图

    • 绘制真实值、未滤波值和滤波值的对比图。
    • 计算并绘制滤波前后的误差。
  2. 误差输出

    • 输出滤波前和 SR-UKF 后的三轴误差平均值。

代码

% 平方根无迹卡尔曼滤波(SR-UKF),三维非线性
% 2024-12-13/Ver1clear;clc;close all; %清空工作区、命令行,关闭小窗口
% rng(0); %固定随机种子
%% 滤波模型初始化
t = 1:1:100;% 定义时间序列
Q = 1*diag([1,1,1]);w=sqrt(Q)*randn(size(Q,1),length(t));% 设置过程噪声协方差矩阵和过程噪声
R = 1*diag([1,1,1]);v=sqrt(R)*randn(size(R,1),length(t));% 设置观测噪声协方差矩阵和观测噪声
P0 = 1*eye(3);% 初始状态估计协方差矩阵
X=zeros(3,length(t));% 初始化状态向量
Z=zeros(3,length(t)); %定义观测值形式
Z(:,1)=[X(1,1)^2/20;X(2,1);X(3,1)]+v(:,1); %观测量
residue_tag = 0; %自适应标签
%% 运动模型
% 初始化未滤波的状态向量
X_ = zeros(3,length(t)); %给未滤波的值分配空间
X_(:,1) = X(:,1); %给未滤波的值赋初值
for i1 = 2:length(t)X(:,i1) = [X(1,i1-1) + (2.5 * X(1,i1-1) / (1 + X(1,i1-1).^2)) + 8 * cos(1.2*(i1-1));X(2,i1-1)+1;X(3,i1-1)]; %真实值X_(:,i1) = [X_(1,i1-1) + (2.5 * X_(1,i1-1) / (1 + X_(1,i1-1).^2)) + 8 * cos(1.2*(i1-1));X_(2,i1-1)+1;X_(3,i1-1)] + w(:,i1-1);%未滤波的值Z(:,i1) = [X(1,i1).^2 / 20;X(2,i1);X(3,i1)] + v(i1); %观测值
end%% 平方根UKF
P = P0;
X_ukf=zeros(3,length(t));
X_ukf(:,1)=X(:,1);
alpha = 0.95;            % 自适应增益因子,用于更新观测噪声协方差for k = 2 : length(t)Xpre = X_ukf(:,k-1);% 预测下一状态

如需帮助:

相关文章:

平方根无迹卡尔曼滤波(SR-UKF)的MATLAB例程,使用三维非线性的系统

本MATLAB 代码实现了平方根无迹卡尔曼滤波(SR-UKF)算法,用于处理三维非线性状态估计问题 文章目录 运行结果代码概述代码 运行结果 三轴状态曲线对比: 三轴误差曲线对比: 误差统计特性输出(命令行截图&…...

【从零开始入门unity游戏开发之——C#篇04】栈(Stack)和堆(Heap),值类型和引用类型,以及特殊的引用类型string,垃圾回收( GC)

文章目录 知识回顾一、栈(Stack)和堆(Heap)1、什么是栈和堆2、为什么要分栈和堆3、栈和堆的区别栈堆 4、总结 二、值类型和引用类型1、那么值类型和引用类型到底有什么区别呢?值类型引用类型 2、总结 三、特殊的引用类…...

人员离岗监测摄像机智能人员睡岗、逃岗监测 Python 语言结合 OpenCV

在安全生产领域,人员的在岗状态直接关系到生产流程的顺利进行和工作环境的安全稳定。人员离岗监测摄像机的出现,为智能人员睡岗、逃岗监测提供了高效精准的解决方案,而其中的核心技术如AI识别睡岗脱岗以及相关的算法盒子和常见的安全生产AI算…...

Linux-ubuntu点LED灯C语言版

​ 一,C语言点灯 1.寄存器配置 设置为SVC模式,复用寄存器设置GPIO1-IO003,设置电气属性,设置为输出模式。 2.软件 汇编语言对模式设置,并且将堆栈指针指向主程序: .global _start_start: /*设置为svr模式 */mrs …...

第P3周:Pytorch实现天气识别

🍨 本文为🔗365天深度学习训练营 中的学习记录博客🍖 原作者:K同学啊 目标 读取天气图片,按文件夹分类搭建CNN网络,保存网络模型并加载模型使用保存的模型预测真实天气 具体实现 (一&#xf…...

代理IP与生成式AI:携手共创未来

目录 代理IP:网络世界的“隐形斗篷” 1. 隐藏真实IP,保护隐私 2. 突破网络限制,访问更多资源 生成式AI:创意与效率的“超级大脑” 1. 提高创作效率 2. 个性化定制 代理IP与生成式AI的协同作用 1. 网络安全 2. 内容创作与…...

函数式编程

Lambda表达式 1、什么时候可以使用Lambda表达式呢? 一般都是在简化匿名内部类,当这个函数是一个接口,并且接口中只要一个方法时,就可以使用Lambda表达式 2、格式 (参数列表)->{方法体} 其中形参也不需要传,只需要传实参 只关注参数列表和方法体不关注方法啥的东西…...

抖音SEO短视频矩阵源码系统开发分享

在数字营销的前沿阵地,抖音短视频平台凭借其独特的魅力和庞大的用户基础,已成为社交媒体领域一股不可小觑的力量。随着平台影响力的持续扩大,如何有效提升视频内容的可见度与流量成为了内容创作者关注的焦点。在此背景下,一套专为…...

常见的锁与线程安全

目录 一、STL,智能指针和线程安全 STL中的容器是否是线程安全的? 智能指针是否是线程安全的? 二、其他常见的各种锁 三、自旋锁 四、读者写者问题 读写锁接口 读者优先伪代码 一、STL,智能指针和线程安全 STL中的容器是否是线程安全的? 不是 . 原因是 , STL 的设…...

java中的List、数组和set

在Java中,List、数组(Array)和Set 是三种常用的数据结构,它们各自有不同的特性、用途和实现方式。下面我们将深入探讨这三者的特点、区别以及它们在 Java 中的常见使用场景。 1. 数组(Array) 特性&#x…...

NLP-Huggingface基本使用方法

NLP的网络结构大同小异,只不过训练策略可能会不同。因为与图像cv不同,文本训练数据非常的多,cv可以使用10几张就可以获得特征向量,而文本做不到学几句话就能让计算机听得懂话。因此,我们都需要使用预训练模型&#xff…...

Liquibase结合SpringBoot使用实现数据库管理

Liquibase概述 Liquibase 是一个开源的数据库变更管理工具,用于跟踪、版本化、和管理数据库结构(如表、字段、索引等)的变更。它的目的是使数据库变更的过程更加透明、可控制、自动化,避免开发团队在多个环境中手动执行相同的数据…...

高防CDN 如何防止DDoS和CC攻击?

在数字化时代,网络安全威胁日益严重,尤其是DDoS(分布式拒绝服务)攻击和CC(Challenge Collapsar)攻击,已成为企业网站和网络服务最常见且最具破坏力的攻击手段。为了有效抵御这些攻击&#xff0c…...

15.初始接口1.0 C#

这是一个用于实验接口的代码 适合初认识接口的人 【CSDN开头介绍】(文心一言AI生成) 在C#编程世界中,接口(Interface)扮演着至关重要的角色,它定义了一组方法,但不提供这些方法的实现。接口作为…...

数据结构day5:单向循环链表 代码作业

一、loopLink.h #ifndef __LOOPLINK_H__ #define __LOOPLINK_H__#include <stdio.h> #include <stdlib.h>typedef int DataType;typedef struct node {union{int len;DataType data;};struct node* next; }loopLink, *loopLinkPtr;//创建 loopLinkPtr create();//…...

利用CNN与多尺度特征、注意力机制的融合实现低分辨率人脸表情识别,并给出模型介绍与代码实现

大家好&#xff0c;我是微学AI&#xff0c;今天给大家介绍一下利用CNN与多尺度特征、注意力机制的融合实现低分辨率人脸表情识别&#xff0c;并给出模型介绍与代码实现。在当今社会&#xff0c;人脸识别技术已广泛应用&#xff0c;但特定场景下的低质量图像仍是一大挑战。 低分…...

spring RestTemplate使用说明

rest-template是spring对httpclient的逻辑封装&#xff0c;它底层还是基于httpclient&#xff0c;所以一些配置其实跟httpclient是强相关的。 基本配置 rest-template可以不带参数&#xff0c;使用默认配置&#xff0c;也可以指定ClientHttpRequestFactory参数&#xff0c;Cl…...

设置HP条UI

概述 设置常见的生命值条&#xff0c; 实现过程 设置UI/image作为形状 设置UI/Image作为背景 设置UI/image&#xff08;healthfill&#xff09;作为填充图片&#xff0c;层数低于背景 设置heathfill的imagetype为filled fillmethod为horizontal [SerializeField] private Im…...

常见排序算法总结 (五) - 堆排序与堆操作

堆排序&#xff08;借助 API&#xff09; 算法思想 利用堆能够维护数组中最大值的性质&#xff0c;根据数组元素建立最大堆&#xff0c;依次弹出元素并维护堆结构&#xff0c;直到堆为空。 稳定性分析 堆排序是不稳定的&#xff0c;因为堆本质上是完全二叉树&#xff0c;排…...

Linux 本地编译安装 gcc9

这里演示非sudo权限的本地linux 用户安装 gcc9 下载源代码&#xff1a; 可以从GCC官方网站或其镜像站点下载GCC 9的源代码压缩包。使用wget或curl命令&#xff0c;这通常不需要额外权限 wget https://ftp.gnu.org/gnu/gcc/gcc-9.5.0/gcc-9.5.0.tar.gz tar -xf gcc-9.5.0.tar…...

开源FreeSWITCH大模型智能客服系统的最佳实践

开源 FreeSWITCH 大模型智能客服系统的最佳实践 原作者&#xff1a;开源呼叫中心FreeIPCC&#xff0c;其Github&#xff1a;https://github.com/lihaiya/freeipcc 引言 开源 FreeSWITCH 大模型智能客服系统因其灵活性、成本效益和技术先进性&#xff0c;成为众多企业提升客户…...

大数据技术与应用——数据可视化(山东省大数据职称考试)

大数据分析应用-初级 第一部分 基础知识 一、大数据法律法规、政策文件、相关标准 二、计算机基础知识 三、信息化基础知识 四、密码学 五、大数据安全 六、数据库系统 七、数据仓库. 第二部分 专业知识 一、大数据技术与应用 二、大数据分析模型 三、数据科学 数据可视化 大…...

大数据之Hbase环境安装

Hbase软件版本下载地址&#xff1a; http://mirror.bit.edu.cn/apache/hbase/ 1. 集群环境 Master 172.16.11.97 Slave1 172.16.11.98 Slave2 172.16.11.99 2. 下载软件包 #Master wget http://archive.apache.org/dist/hbase/0.98.24/hbase-0.98.24-hadoop1-bin.tar.gz…...

Node.js day-01

01.Node.js 讲解 什么是 Node.js&#xff0c;有什么用&#xff0c;为何能独立执行 JS 代码&#xff0c;演示安装和执行 JS 文件内代码 Node.js 是一个独立的 JavaScript 运行环境&#xff0c;能独立执行 JS 代码&#xff0c;因为这个特点&#xff0c;它可以用来编写服务器后端…...

OpenCV相机标定与3D重建(25)计算两个三维点集之间的最优仿射变换矩阵(3x4)函数estimateAffine3D()的使用

操作系统&#xff1a;ubuntu22.04 OpenCV版本&#xff1a;OpenCV4.9 IDE:Visual Studio Code 编程语言&#xff1a;C11 算法描述 计算两个3D点集之间的最优仿射变换。 它计算 [ x y z ] [ a 11 a 12 a 13 a 21 a 22 a 23 a 31 a 32 a 33 ] [ X Y Z ] [ b 1 b 2 b 3 ] \beg…...

SQL 中 INNER JOIN 和 LEFT JOIN 的区别和用法

在数据库语言 SQL 中&#xff0c;连接 (也称进行表结合操作)是一种常见的操作&#xff0c;用于将多个数据表格核实关联进行查询。常见的连接类型中&#xff0c; INNER JOIN 和 LEFT JOIN 是最基本且最常用的。下面将给出完整的区别和用法说明。 1. 基本概念 INNER JOIN (内连…...

【计算机网络】lab2 Ethernet(链路层Ethernet frame结构细节)

&#x1f308; 个人主页&#xff1a;十二月的猫-CSDN博客 &#x1f525; 系列专栏&#xff1a; &#x1f3c0;各种软件安装与配置_十二月的猫的博客-CSDN博客 &#x1f4aa;&#x1f3fb; 十二月的寒冬阻挡不了春天的脚步&#xff0c;十二点的黑夜遮蔽不住黎明的曙光 目录 1. …...

2024 年 MySQL 8.0.40 安装配置、Workbench汉化教程最简易(保姆级)

首先到官网上下载安装包&#xff1a;http://www.mysql.com 点击下载&#xff0c;拉到最下面&#xff0c;点击社区版下载 windows用户点击下面适用于windows的安装程序 点击下载&#xff0c;网络条件好可以点第一个&#xff0c;怕下着下着断了点第二个离线下载 双击下载好的安装…...

提升PHP技能:18个实用高级特性

掌握PHP基础知识只是第一步。 深入了解这18个强大的PHP特性&#xff0c;将显著提升您的开发效率和代码质量。 1、超越 __construct() 的魔法方法 虽然 __construct() 为大多数开发者所熟知&#xff0c;PHP 却提供了更多强大的魔术方法&#xff0c;例如&#xff1a; class Da…...

QT数据库(三):QSqlQuery使用

QSqlQuery 简介 QSqlQuery 是能运行任何 SQL 语句的类&#xff0c;如 SELECT、INSERT、UPDATE、DELETE 等 SQL 语句。所以使用 QSqlQuery 几乎能进行任何操作&#xff0c;例如创建数据表、修改数据表的字段定义、进行数据统计等。如果运行的是 SELECT 语句&#xff0c;它查询…...

【机器学习】在向量的流光中,揽数理星河为衣,以线性代数为钥,轻启机器学习黎明的瑰丽诗章

文章目录 线性代数入门&#xff1a;机器学习零基础小白指南前言一、向量&#xff1a;数据的基本单元1.1 什么是向量&#xff1f;1.1.1 举个例子&#xff1a; 1.2 向量的表示与维度1.2.1 向量的维度1.2.2 向量的表示方法 1.3 向量的基本运算1.3.1 向量加法1.3.2 向量的数乘1.3.3…...

设计模式详解(十一):模板方法——Template Method

Template Method 设计模式 1. 概述 Template Method 是一种行为设计模式&#xff0c;它定义了一个算法的框架&#xff0c;并允许子类在不改变算法结构的前提下重新定义算法中的某些步骤。 在 Template Method 模式中&#xff1a; 父类&#xff08;抽象类&#xff09;定义了…...

使用 DeepSpeed 微调 OPT 基础语言模型

文章目录 OPT 基础语言模型Using OPT with DeepSpeedmain.py 解析1、导入库和模块2、解析命令行参数3、main 函数3.1 设备与分布式初始化3.2 模型与数据准备3.3 定义评估函数3.4 优化器与学习率调度器设置3.5 使用 deepspeed 进行模型等初始化3.6 训练循环3.7 模型保存 4、dsch…...

DPDK用户态协议栈-TCP Posix API 2

tcp posix api send发送 ssize_t nsend(int sockfd, const void *buf, size_t len, __attribute__((unused))int flags) {ssize_t length 0;void* hostinfo get_host_fromfd(sockfd);if (hostinfo NULL) {return -1;}struct ln_tcp_stream* stream (struct ln_tcp_stream…...

打造微信小程序中的视频播放交互体验:videoUI组件库实战

本文还有配套的精品资源&#xff0c;点击获取 简介&#xff1a;本项目介绍如何利用 videoUI 组件库在微信小程序中实现视频切换播放和全屏播放功能。涵盖微信小程序开发基础、 <video> 组件使用、视频切换逻辑、全屏播放实现以及 videoUI 库的应用。为开发者提供…...

Django REST framework(DRF)在处理不同请求方法时的完整流程

文章目录 一、POST 请求创建对象的流程二、GET 请求获取对象列表的流程三、GET 请求获取单个对象的流程四、PUT/PATCH 请求更新对象的流程五、自定义方法的流程自定义 GET 方法自定义 POST 方法 一、POST 请求创建对象的流程 请求到达视图层 方法调用&#xff1a; dispatch说明…...

【Hive】-- hive 3.1.3 伪分布式部署(单节点)

1、环境准备 1.1、版本选择 apache hive 3.1.3 apache hadoop 3.1.0 oracle jdk 1.8 mysql 8.0.15 操作系统:Mac os 10.151.2、软件下载 https://archive.apache.org/dist/hive/ https://archive.apache.org/dist/hadoop/ 1.3、解压 tar -zxvf apache-hive-4.0.0-bin.tar…...

unity 雷达

unity 雷达 首先去商店下载TouchScript插件 导入的时候勾选Enable TUIO 然后把预制体Cursors和TouchManager拖上 最后把TuioInput这个脚本挂上 脚本上的端口号尽量不改...

Visual Studio 2022 安装和管理 GitHub Copilot

&#x1f380;&#x1f380;&#x1f380;【AI辅助编程系列】&#x1f380;&#x1f380;&#x1f380; Visual Studio 使用 GitHub Copilot 与 IntelliCode 辅助编码Visual Studio 安装和管理 GitHub CopilotVisual Studio 使用 GitHub Copilot 扩展Visual Studio 使用 GitHu…...

Python从0到100(七十三):Python OpenCV-OpenCV实现手势虚拟拖拽

前言: 零基础学Python:Python从0到100最新最全教程。 想做这件事情很久了,这次我更新了自己所写过的所有博客,汇集成了Python从0到100,共一百节课,帮助大家一个月时间里从零基础到学习Python基础语法、Python爬虫、Web开发、 计算机视觉、机器学习、神经网络以及人工智能…...

利用notepad++删除特定关键字所在的行

1、按组合键Ctrl H&#xff0c;查找模式选择 ‘正则表达式’&#xff0c;不选 ‘.匹配新行’ 2、查找目标输入 &#xff1a; ^.*关键字.*\r\n (不保留空行) ^.*关键字.*$ (保留空行)3、替换为&#xff1a;&#xff08;空&#xff09; 配置界面参考下图&#xff1a; ​​…...

Alan Chhabra:MongoDB AI应用程序计划(MAAP) 为客户提供价值

MongoDB全球合作伙伴执行副总裁 Alan Chhabra 每当有人向我问询MongoDB&#xff0c;我都会说他们很可能在不觉之间已经与MongoDB有过交集。事实上&#xff0c;包括70%财富百强在内的许多世界领先企业公司都在使用MongoDB。我们在MongoDB所做的一切都是为了服务客户&#xff0c…...

FFmpeg 实战解复用与复用

FFmpeg FFmpeg 是一个功能强大、广泛使用的多媒体处理工具,可以处理音频、视频、字幕以及多种容器格式的操作。它支持解码、编码、复用、解复用、流式传输、过滤等功能。以下是关于 FFmpeg 的一些核心信息和操作说明: 核心组件 FFmpeg 是由以下几个主要库组成的: libavcode…...

数据结构(顺序表)JAVA方法的介绍

前言 在 Java 中&#xff0c;集合类&#xff08;Collections&#xff09;是构建高效程序的核心组件之一&#xff0c;而 List 接口作为集合框架中的重要一员&#xff0c;是一个有序、可重复的元素集合。与 Set 接口不同&#xff0c;List 保证了元素的顺序性&#xff0c;并允许存…...

电商商品详情API接口(item get)数据分析上货

电商商品详情API接口&#xff08;item get&#xff09;在数据分析与商品上货方面发挥着重要作用。以下是对这两个方面的详细探讨&#xff1a; 一、数据分析 数据源获取&#xff1a; 商品详情API接口提供了丰富的数据源&#xff0c;包括商品的标题、价格、库存、描述、图片、用…...

supervisor使用详解

0、介绍 supervisor 是一个用 Python 编写的客户端/服务器系统&#xff0c;它允许用户在类 UNIX 操作系统&#xff08;如 Linux&#xff09;上监控和控制进程。supervisor 并不是一个分布式调度框架&#xff0c;而是一个进程管理工具&#xff0c;它可以用来启动、停止和重启程…...

结合开源低代码-microi吾码 阿里云建桶,以及minio文件转移阿里云oss

前言 最近在工作中&#xff0c;碰到一开始一个小程序的照片和视频都放在公司的minio服务器上存储。但日积月累的&#xff0c;而且这个客户的访问量也大&#xff0c;照片和视频每天的存储空间也很大&#xff0c;这每天也是比不菲的费用&#xff0c;而且也会加慢后台的访问速度。…...

如何为IntelliJ IDEA配置JVM参数

在使用IntelliJ IDEA进行Java开发时&#xff0c;合理配置JVM参数对于优化项目性能和资源管理至关重要。IntelliJ IDEA提供了两种方便的方式来设置JVM参数&#xff0c;以确保你的应用程序能够在最佳状态下运行。本文将详细介绍这两种方法&#xff1a;通过工具栏编辑配置和通过服…...

关于SQL注入的面试题及经验分享

Q&#xff1a;简述数据库的存储引擎 A&#xff1a;数据库存储引擎是数据库底层软件组织&#xff0c;数据库管理系统&#xff08;DBMS&#xff09;使用数据引擎进行创建、查询、更新和删除数据。不同的存储引擎提供不同的存储机制、索引技巧、锁定水平等功能&#xff0c;使用不…...

ISP(Image Signal Processor)——HDR技术总结

传统多帧融合技术 拍摄一系列不同曝光时长的图像帧&#xff08;LDR&#xff09;&#xff0c;然后使用融合算法进行融合成HDR图像。 融合算法可以分为两种 基于照度图估计的融合 基于照度估计需要拟合相机响应函数&#xff0c;详细可以参考如下论文&#xff1a; Recovering H…...