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

算法-UKF中Sigma点生成

void UKF::MakeSigmaPoints() {Eigen::VectorXd x_aug_ = Eigen::VectorXd(n_x_);x_aug_.head(n_x_) = x_;Eigen::MatrixXd P_aug = Eigen::MatrixXd::Zero(n_x_, n_x_);// 转成正定矩阵P_aug = pdefinite_svd(P_);// LLT分解Eigen::MatrixXd L = P_aug.llt().matrixL();sigma_points = Eigen::MatrixXd(n_x_, 2 * n_x_ + 1);sigma_points.col(0) = x_aug_;const double c = std::sqrt(lamda_ + n_x_);for (int i = 0; i < n_x_; ++i) {sigma_points.col(i + 1) = x_aug_ + c * L.col(i);sigma_points.col(i + n_x_ + 1) = x_aug_ - c * L.col(i);}
}

代码中Sigma点生成解释如下:
在UKF(Unscented Kalman Filter,无迹卡尔曼滤波)中,sigma点是一组精心选择的采样点,用于近似非线性函数的传播和观测模型。这些sigma点基于系统的状态向量均值和协方差矩阵生成,旨在捕捉状态向量的分布特性。以下是关于UKF中sigma点的详细解释:
一、sigma点的生成

确定状态向量和协方差矩阵:状态向量通常包含系统的状态变量。协方差矩阵描述了状态变量之间的关系,即各状态变量之间的协方差。
选择sigma点的数量:通常,sigma点的数量是状态向量维度的两倍加一,即如果状态向量的维度为n,则sigma点的数量为2n+1。
生成sigma点:根据状态向量的均值和协方差矩阵,通过特定的算法(如Julier-UT权重或Merwe-UT权重)生成sigma点。这些sigma点围绕状态向量的均值分布,能够较好地反映状态向量的概率分布特性。

二、sigma点的作用

近似非线性函数的传播:在UKF的预测步骤中,将生成的sigma点通过系统的非线性状态方程传播到下一个时刻,得到预测的sigma点。这一步骤用于近似非线性函数在状态空间中的传播。
计算预测状态向量和协方差矩阵:通过对传播后的sigma点进行加权平均,计算预测状态向量和预测协方差矩阵。这些预测值反映了系统状态在下一时刻的估计值及其不确定性。
近似非线性观测模型:在UKF的更新步骤中,将预测的sigma点通过系统的非线性观测方程映射到观测空间,得到预测的观测值sigma点。这一步骤用于近似非线性观测模型在观测空间中的表现。
计算卡尔曼增益和更新状态向量:通过预测的观测值sigma点计算预测的观测向量和协方差矩阵,进而计算卡尔曼增益。最后,利用卡尔曼增益和实际的观测值对预测的状态向量进行修正,得到更新后的状态向量和协方差矩阵。

三、sigma点的优势

处理非线性系统:UKF通过sigma点近似非线性函数的传播和观测模型,能够有效处理非线性系统。
提高估计精度:相比于EKF(Extended Kalman Filter,扩展卡尔曼滤波)通过泰勒展开将非线性系统线性化,UKF不需要忽略高阶项,因此通常能够获得更高的估计精度。
实现简单:UKF在实现上比EKF更为简单,因为它不需要计算复杂的雅可比矩阵。

综上所述,sigma点在UKF中扮演着至关重要的角色,它们通过近似非线性函数的传播和观测模型,实现了对非线性系统的有效滤波和状态估计。

相关文章:

算法-UKF中Sigma点生成

void UKF::MakeSigmaPoints() {Eigen::VectorXd x_aug_ Eigen::VectorXd(n_x_);x_aug_.head(n_x_) x_;Eigen::MatrixXd P_aug Eigen::MatrixXd::Zero(n_x_, n_x_);// 转成正定矩阵P_aug pdefinite_svd(P_);// LLT分解Eigen::MatrixXd L P_aug.llt().matrixL();sigma_point…...

精选五款热门骨传导耳机分享,让你避免踩坑的陷阱

因为骨传导耳机独特的佩戴方式和声音的传播方式&#xff0c;受到了小耳、油耳以及运动爱好者的的喜爱&#xff0c;但也由于市面上的骨传导耳机品牌越来越多&#xff0c;很多朋友不知道该怎么选择&#xff0c;今天我挑选出市面上体验感较好&#xff0c;各方面比较出色的骨传导给…...

「字符串」前缀函数|KMP匹配:规范化next数组 / LeetCode 28(C++)

概述 为什么大家总觉得KMP难&#xff1f;难的根本就不是这个算法本身。 在互联网上你可以见到八十种KMP算法的next数组定义和模式串回滚策略&#xff0c;把一切都懂得特别混乱。很多时候初学者的难点根本不在于这个算法本身&#xff0c;而是它令人痛苦的百花齐放的定义。 有…...

python人工智能002:jupyter基本使用

小知识&#xff1a;将jupyter修改为中文&#xff0c;修改用户变量&#xff0c; 注意是用户变量&#xff0c;不是系统变量 新增用户变量 变量名&#xff1a;LANG 变量值&#xff1a;zh_CN.UTF8 然后重启jupyter 上一章的软件安装完成之后&#xff0c;就可以创建文件夹来学习写…...

Linux使用 firewalld管理防火墙命令

Linux 发行版中使用的动态防火墙管理工具。使用 firewalld&#xff0c;你可以查看防火墙状态、当前配置的规则以及开放的端口。以下是一些常用的 firewalld 命令来管理和查看防火墙状态及端口配置。 1. 查看防火墙状态 检查 firewalld 是否正在运行 sudo systemctl status f…...

二叉树(三)

一、二叉树的遍历 二叉树遍历是按照某种特定的规则&#xff0c;依次对二叉树中的结点进行相应的操作&#xff0c;并且每个结点只操作一次。 1.前序遍历&#xff08;先根遍历&#xff09; 前序遍历&#xff08;Preorder Traversal也叫先序遍历&#xff09;——根、左子树、右…...

05--kubernetes组件与安装

前言&#xff1a;终于写到kubernetes&#xff08;k8s&#xff09;&#xff0c;容器编排工具不止k8s一个&#xff0c;它的优势在于搭建集群&#xff0c;也是传统运维和云计算运维的第一道门槛&#xff0c;这里会列出两种安装方式&#xff0c;详细步骤会在下文列出&#xff0c;文…...

EmguCV学习笔记 VB.Net和C# 下的OpenCv开发 C# 目录

版权声明&#xff1a;本文为博主原创文章&#xff0c;转载请在显著位置标明本文出处以及作者网名&#xff0c;未经作者允许不得用于商业目的。 EmguCV是一个基于OpenCV的开源免费的跨平台计算机视觉库,它向C#和VB.NET开发者提供了OpenCV库的大部分功能。 教程VB.net版本请访问…...

探索TensorFlow:深度学习的未来

标题&#xff1a;探索TensorFlow&#xff1a;深度学习的未来 在当今快速发展的人工智能领域&#xff0c;TensorFlow无疑是最耀眼的明珠之一。TensorFlow是由Google Brain团队开发的一个开源机器学习框架&#xff0c;它以其强大的灵活性、易用性和高效的性能&#xff0c;迅速成…...

探索地理空间分析的新世界:Geopandas的魔力

文章目录 探索地理空间分析的新世界&#xff1a;Geopandas的魔力背景&#xff1a;为何选择Geopandas&#xff1f;这个库是什么&#xff1f;如何安装这个库&#xff1f;五个简单的库函数使用方法场景应用&#xff1a;Geopandas在实际工作中的应用常见bug及解决方案总结 探索地理…...

如何为网站申请免费SSL证书?

一、准备阶段 确定证书类型&#xff1a; 对于大多数个人博客和小型企业网站&#xff0c;DV&#xff08;域名验证&#xff09;SSL证书已足够使用&#xff0c;因为它仅验证域名所有权&#xff0c;成本较低且验证快速。准备域名&#xff1a; 确保你拥有一个有效的域名&#xff0c…...

Java项目集成RocketMQ

文章目录 1.调整MQ的配置1.进入bin目录2.关闭broker和namesrv3.查看进程确认关闭4.编辑配置文件broker.conf&#xff0c;配置brokerIP15.开放端口109116.重新启动1.进入bin目录2.启动mqnamesrv和mqbroker1.启动 NameServer 并将输出重定向到 mqnamesrv.log2.**启动 Broker 并将…...

如何将 Bamboo agent 能力迁移到极狐GitLab tag 上?

极狐GitLab 是 GitLab 在中国的发行版&#xff0c;专门面向中国程序员和企业提供企业级一体化 DevOps 平台&#xff0c;用来帮助用户实现需求管理、源代码托管、CI/CD、安全合规&#xff0c;而且所有的操作都是在一个平台上进行&#xff0c;省事省心省钱。可以一键安装极狐GitL…...

正则表达式入门:Python ‘ re ‘ 模块详解

正则表达式&#xff08;Regular Expression&#xff0c;简称 re&#xff09;是一种强大而灵活的工具&#xff0c;广泛用于字符串匹配、替换和分割等操作&#xff0c;尤其在处理网页爬虫数据时非常有用。Python 提供了 " re " 模块来支持正则表达式的使用&#xff0c;…...

thinkphp8.0+aliapy(支付宝)pc网站支付

环境&#xff1a;宝塔-centOS8.5,php8.3 第一步&#xff1a;安装alipay v3版本的安装依赖包&#xff1b; composer require alipaysdk/openapi:dev第二步&#xff1a;根据官方文档,把支付相关的类引用进来&#xff1b; <?php declare (strict_types 1);namespace app\p…...

高速信号的眼图、加重、均衡

目录 高速信号的眼图、加重、均衡眼图加重均衡线性均衡器CTLE判决反馈均衡器DFE 高速信号的眼图、加重、均衡 眼图 通常用示波器观察接收信号波形的眼图来分析码间串扰和噪声对系统性能的影响&#xff0c;从而估计系统优劣程度&#xff0c;因而眼图分析是高速互连系统信号完整…...

2024年PMP考前冲刺必背的学习笔记,整理好给你!

项目的四大特点:临时性、独特性、变革驱动性和创造商业价值。 项目管理&#xff1a;将知识、技能、工具与技术应用于项目活动&#xff0c;以满足项目的要求 Pestle&#xff1a;P政治&#xff0c;E经济&#xff0c;S社会&#xff0c;T技术&#xff0c;L法律&#xff0c;E环境 …...

增加服务器带宽可以提高资源加载速度吗?

答案是可以的 &#xff0c;增加服务器带宽通常能够提高资源加速速度。带宽是服务器与互联网之间传输数据的速率&#xff0c;它决定了在单位时间内可以传输的数据量。以下是增加带宽如何提高资源加速速度的几个方面&#xff1a; 1.更快的数据传输&#xff1a;带宽增加后&#xf…...

汽车EDI: NAVISTAR EDI对接

Navistar International Corporation 是一家美国商用车辆制造公司&#xff0c;总部位于伊利诺伊州的Lisle。公司以生产中型和重型卡车、公共汽车、柴油发动机和底盘闻名&#xff0c;其产品广泛应用于运输、建筑、和农业等行业。Navistar 的历史可以追溯到1831年&#xff0c;由国…...

【Word多级标题完整设置】设置各级标题样式将多级列表链接到各级标题样式中

Word多级标题完整设置 一、设置各级标题样式主标题样式设置中英文字体、字形以及字号设置段落设置&#xff08;缩进、间距和行距&#xff09; 一级标题样式设置中英文字体、字形以及字号设置段落设置&#xff08;缩进、间距和行距&#xff09; 二级标题样式设置中英文字体、字形…...

React hook之useRef

React useRef 详解 useRef 是 React 提供的一个 Hook&#xff0c;用于在函数组件中创建可变的引用对象。它在 React 开发中有多种重要用途&#xff0c;下面我将全面详细地介绍它的特性和用法。 基本概念 1. 创建 ref const refContainer useRef(initialValue);initialValu…...

通过Wrangler CLI在worker中创建数据库和表

官方使用文档&#xff1a;Getting started Cloudflare D1 docs 创建数据库 在命令行中执行完成之后&#xff0c;会在本地和远程创建数据库&#xff1a; npx wranglerlatest d1 create prod-d1-tutorial 在cf中就可以看到数据库&#xff1a; 现在&#xff0c;您的Cloudfla…...

基于uniapp+WebSocket实现聊天对话、消息监听、消息推送、聊天室等功能,多端兼容

基于 ​UniApp + WebSocket​实现多端兼容的实时通讯系统,涵盖WebSocket连接建立、消息收发机制、多端兼容性配置、消息实时监听等功能,适配​微信小程序、H5、Android、iOS等终端 目录 技术选型分析WebSocket协议优势UniApp跨平台特性WebSocket 基础实现连接管理消息收发连接…...

MMaDA: Multimodal Large Diffusion Language Models

CODE &#xff1a; https://github.com/Gen-Verse/MMaDA Abstract 我们介绍了一种新型的多模态扩散基础模型MMaDA&#xff0c;它被设计用于在文本推理、多模态理解和文本到图像生成等不同领域实现卓越的性能。该方法的特点是三个关键创新:(i) MMaDA采用统一的扩散架构&#xf…...

Mac软件卸载指南,简单易懂!

刚和Adobe分手&#xff0c;它却总在Library里给你写"回忆录"&#xff1f;卸载的Final Cut Pro像电子幽灵般阴魂不散&#xff1f;总是会有残留文件&#xff0c;别慌&#xff01;这份Mac软件卸载指南&#xff0c;将用最硬核的方式教你"数字分手术"&#xff0…...

土地利用/土地覆盖遥感解译与基于CLUE模型未来变化情景预测;从基础到高级,涵盖ArcGIS数据处理、ENVI遥感解译与CLUE模型情景模拟等

&#x1f50d; 土地利用/土地覆盖数据是生态、环境和气象等诸多领域模型的关键输入参数。通过遥感影像解译技术&#xff0c;可以精准获取历史或当前任何一个区域的土地利用/土地覆盖情况。这些数据不仅能够用于评估区域生态环境的变化趋势&#xff0c;还能有效评价重大生态工程…...

【python异步多线程】异步多线程爬虫代码示例

claude生成的python多线程、异步代码示例&#xff0c;模拟20个网页的爬取&#xff0c;每个网页假设要0.5-2秒完成。 代码 Python多线程爬虫教程 核心概念 多线程&#xff1a;允许程序同时执行多个任务&#xff0c;提高IO密集型任务&#xff08;如网络请求&#xff09;的效率…...

OpenPrompt 和直接对提示词的嵌入向量进行训练有什么区别

OpenPrompt 和直接对提示词的嵌入向量进行训练有什么区别 直接训练提示词嵌入向量的核心区别 您提到的代码: prompt_embedding = initial_embedding.clone().requires_grad_(True) optimizer = torch.optim.Adam([prompt_embedding...

ios苹果系统,js 滑动屏幕、锚定无效

现象&#xff1a;window.addEventListener监听touch无效&#xff0c;划不动屏幕&#xff0c;但是代码逻辑都有执行到。 scrollIntoView也无效。 原因&#xff1a;这是因为 iOS 的触摸事件处理机制和 touch-action: none 的设置有关。ios有太多得交互动作&#xff0c;从而会影响…...

如何在最短时间内提升打ctf(web)的水平?

刚刚刷完2遍 bugku 的 web 题&#xff0c;前来答题。 每个人对刷题理解是不同&#xff0c;有的人是看了writeup就等于刷了&#xff0c;有的人是收藏了writeup就等于刷了&#xff0c;有的人是跟着writeup做了一遍就等于刷了&#xff0c;还有的人是独立思考做了一遍就等于刷了。…...