sage-huga改进SITAN

Sage-Husa自适应滤波算法

Sage-Husa自适应滤波算法是一种在递推滤波过程中实时估计和修正系统噪声和观测噪声统计特性的算法,从而降低系统模型误差,提高滤波精度。该算法基于卡尔曼滤波,并通过自适应调整噪声协方差矩阵来优化滤波效果。

算法原理

Sage-Husa滤波器的核心思想是通过最大似然估计和自适应因子来动态调整噪声协方差矩阵。具体来说,算法通过以下步骤实现:

  1. 系统状态方程和观测方程: 状态方程:xk = Akxk−1 + wk 观测方程:zk = Hkxk + vk 其中,Ak和Hk分别为状态转移矩阵和观测矩阵,wk和vk为过程噪声和观测噪声,其协方差矩阵分别为Qk和Rk1

  2. 卡尔曼滤波更新过程: 预测状态:xk = Akxk−1 预测协方差:Pk = AkPk−1AkT + Qk 卡尔曼增益:Kk = PkHkT(HkPkHkT + Rk)−1 更新状态:xk = xk + Kk(zk − Hkxk) 更新协方差:Pk = (I − KkHk)Pk1

  3. 自适应调整噪声协方差矩阵: 基于新息的观测噪声协方差矩阵(IAE):通过新息向量vk = zk − Hkxk估计Rk1。 基于残差的观测噪声协方差矩阵(RAE):通过残差向量v^k = zk − Hkxk估计Rk1^。 系统状态噪声协方差矩阵:通过状态误差Δxk = xk − xk−1估计Qk1

代码示例

以下是一个Sage-Husa自适应滤波算法的Python实现示例:

import numpy as np

def sage_husa_kf(F, G, H, Q0, R0, X0, Z, P0, b, s):
N = len(Z)
M = len(X0)
X = np.zeros((M, N))
X[:, 0] = X0
P = P0
q = np.zeros(M)
r = 0
Q = Q0
R = R0

for k in range(1, N):
X_est = F @ X[:, k-1] + q
P_pre = F @ P @ F.T + G @ Q @ G.T
e = Z[:, k] - H @ X_est - r
K = P_pre @ H.T @ np.linalg.inv(H @ P_pre @ H.T + R)
X[:, k] = X_est + K @ e
P = (np.eye(M) - K @ H) @ P_pre

r = 1/k * ((k-1) * r + Z[:, k] - H @ X_est)
q = 1/k * ((k-1) * q + X[:, k] - F @ X[:, k-1])
R = 1/k * ((k-1) * R + Z[:, k] @ Z[:, k].T - H @ P @ H.T)
Q = 1/k * ((k-1) * Q + K @ e @ e.T @ K.T + P - F @ P @ F.T)

return X, e, P

# 示例参数
F = np.array([[0.0673, 0.1553], [1, 0]])
G = np.array([[1, -0.575], [0, 0]])
H = np.array([[1, 0]])
Q0 = np.diag([0.1, 0.1])
R0 = 0.5
X0 = np.array([0, 0])
Z = np.random.randn(2, 100) # 示例观测数据
P0 = np.eye(2) * 10000
b = 0
s = np.eye(2)

X, e, P = sage_husa_kf(F, G, H, Q0, R0, X0, Z, P0, b, s)

重要考虑事项

Sage-Husa自适应滤波算法在处理高维系统时,计算量较大,实时性难以保证。此外,在线估计R和Q矩阵有时会导致滤波发散现象,影响算法的稳定性和收敛性。

  1. https://blog.csdn.net/weiziqi_fan/article/details/128040416
  2. https://blog.csdn.net/Aaags/article/details/128165326
  3. https://blog.csdn.net/taosanzang6121/article/details/123882033

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

如若内容造成侵权/违法违规/事实不符,请联系我们进行投诉反馈qq邮箱809451989@qq.com,一经查实,立即删除!

相关文章

【Linux Oracle】time命令+oracle exp压缩

Linux && Oracle相关文档,希望互相学习,共同进步 风123456789~-CSDN博客 1.说明 Linux中的time命令:主要用于测量命令的执行时间,并显示该命令在执行过程中所使用的系统资源情况,如CPU时间、内存和…

STM32CUBEIDE FreeRTOS操作教程(十三):task api 任务访问函数

STM32CUBEIDE FreeRTOS操作教程(十三):task api 任务访问函数 STM32CUBE开发环境集成了STM32 HAL库进行FreeRTOS配置和开发的组件,不需要用户自己进行FreeRTOS的移植。这里介绍最简化的用户操作类应用教程。以STM32F401RCT6开发板…

网络安全扫描--基础篇

前言 1、了解互联网安全领域中日趋重要的扫描技术 2、了解在不同网络场景下扫描技术手段 3、熟悉linux下系统内核防护策略并能大件一个有效的系统防护体系 4、增强工作安全意识,并能有效的实践于工作场景中 目录 1、熟悉主机扫描工具(fping,…

品融电商解读:小红书KOC打法如何重构品牌增长新路径

品融电商解读:小红书KOC打法如何重构品牌增长新路径 在内容生态高度饱和的今天,品牌若想在小红书等平台实现破局,仅依赖“产品为王”的单一逻辑已远远不够。作为国内头部的小红书代运营公司,品融电商观察到,平台的竞…

【原创工具】文件清单生成器 By怜渠客

【原创工具】文件清单生成器 By怜渠客 刚在论坛看到了一个文件列表生成器 文件列表生成器 - 吾爱破解 - 52pojie.cn ,和我去年写的一个软件很像,当时我也是有需求,要把一个文件夹里及其子文件夹里所有的文件列出来,就临时弄了个小…

深度学习-6.用于计算机视觉的深度学习

Deep Learning - Lecture 6 Deep Learning for Computer Vision 简介深度学习在计算机视觉领域的发展时间线 语义分割语义分割系统的类型上采样层语义分割的 SegNet 架构软件中的SegNet 架构数据标注 目标检测与识别目标检测与识别问题两阶段和一阶段目标检测与识别两阶段检测器…

力扣-动态规划-746 使用最小花费爬楼梯

思路 dp数组定义&#xff1a;爬到第i层楼梯最小消耗dp[i]的费用递推公式&#xff1a;dp数组初始化&#xff1a;dp[0] 0, dp[1] 0;遍历顺序&#xff1a;顺序遍历时间复杂度&#xff1a; 代码 class Solution { public:int minCostClimbingStairs(vector<int>&am…

智慧后勤的消防管理:豪越科技为安全护航

智慧后勤消防管理难题大揭秘&#xff01; 在智慧后勤发展得如火如荼的当下&#xff0c;消防管理却暗藏诸多难题。传统模式下&#xff0c;消防设施分布得那叫一个散&#xff0c;就像一盘散沙&#xff0c;管理起来超费劲。人工巡检不仅效率低&#xff0c;还容易遗漏&#xff0c;不…

Linux中的cgdb的基本使用

1.cgdb的简介 Linux中的cgdb是一个基于GDB&#xff08;GNU Debugger&#xff09;的图形化调试前端&#xff0c;它结合了GDB的命令行界面功能和代码查看窗口&#xff0c;为开发者提供了一个更为直观的调试体验。 cgdb的作用和功能&#xff1a; 直观调试体验&#xff1a;cgdb提供…

欧拉回路与哈密尔顿回路: Fleury算法与Hierholzer 算法(C++)

图论中的回路是指一个路径, 它从某个顶点开始, 经过所有边恰好一次, 并回到起始顶点. 定义 欧拉回路: 从一个顶点出发, 经过每条边恰好一次, 并且最终回到起始顶点. 哈密尔顿回路: 从一个顶点出发, 经过每个顶点恰好一次, 并且最终回到起始顶点. 欧拉路径: 从一个顶点出发, …

数据结构 之 【无头单向非循环链表】(C语言实现)

下面将 无头单向非循环链表 简称为 单链表 头指针&#xff1a;指向链表第一个节点的指针 链表为空时&#xff0c;头指针也为空 要实现单链表&#xff0c;就是要实现单链表的 增删查改 一、无头单向非循环链表的c语言实现 1.准备工作 #include <stdio.h> #include <s…

傅里叶变换+注意力机制!CCF-A离你并不遥远!

今天给大家推荐一个&#xff0c;创新Top且热度持续攀升的方向&#xff1a;傅里叶变换注意力机制&#xff01; 傅里叶变换能够捕捉到频域的特征&#xff0c;而注意力机制则能使模型专注任务相关信息。两者结合&#xff0c;不仅能提升模型的性能和效率&#xff0c;还能增强模型的…

【学习笔记】计算机网络(四)

第4章 网络层 文章目录 第4章 网络层4.1 网络层的几个重要概念4.1.1 网络层提供的两种服务虚电路服务&#xff08;Virtual Circuit Service&#xff09;数据报服务&#xff08;Datagram Service&#xff09; 4.1.2 网络层的两个层面 4.2 网际协议 IP - IPv44.2.1 虚拟互连网络4…

Ollama部署本地大模型DeepSeek-R1-Distill-Llama-70B

文章目录 一、下模二、转模1. 下载转换工具2. 安装环境依赖3. llama.cpp1. 转换脚本依赖2. llama.cpp安装依赖包3. llama.cpp编译安装4. 格式转换 三、Ollama部署1. 安装启动Ollama2. 添加模型3. 测试运行 一、下模 #模型下载 from modelscope import snapshot_download model…

【GPT】从GPT1到GPT3

every blog every motto: Although the world is full of suffering&#xff0c; it is full also of the overcoming of it 0. 前言 从GPT1 到GPT3 1. GPT1 论文&#xff1a; https://s3-us-west-2.amazonaws.com/openai-assets/research-covers/language-unsupervised/lan…

stm32使用(无线串口)实现收发、判断数据+DMA(HAL库)

目录 前言&#xff1a; 1. 用CubeMX配置串口DMA所需要的环境 &#xff08;1&#xff09;打开CubeMAX&#xff0c;点击红框 &#xff08;2&#xff09;查找stm32F103C8T6的芯片 &#xff08;3&#xff09;配置SYS &#xff08;4&#xff09;配置RCC时钟 &#xff08;5&am…

QT入门--QMainWindow

从上向下依次是菜单栏&#xff0c;工具栏&#xff0c;铆接部件&#xff08;浮动窗口&#xff09;&#xff0c;状态栏&#xff0c;中心部件 菜单栏 创建菜单栏 QMenuBar* mybar1 menuBar(); 将菜单栏放到窗口中 setMenuBar(mybar1); 创建菜单 QMenu *myfilemenu mybar1-…

重构清洁想象,石头科技首创五轴仿生机械手打破传统清洁边界

2月25日&#xff0c;主题为“重构清洁想象”的石头科技2025发布会在上海天文馆正式召开。石头科技清洁产品BU总裁钱启杰在会上宣布&#xff0c;石头科技正式成为上海天文馆授权合作伙伴&#xff0c;希望借助航天科技到家庭科技的跨越&#xff0c;进一步简化家庭清洁工作&#x…

Amazon Outposts:构建混合云的安全堡垒,让数据安全“零距离”

在数字化转型的浪潮中&#xff0c;企业纷纷拥抱混合云架构以兼顾敏捷性与本地化需求。然而&#xff0c;如何确保数据在本地与云端的无缝流转中始终安全可控&#xff0c;成为企业面临的核心挑战。Amazon Outposts 作为AWS推出的混合云解决方案&#xff0c;不仅将原生AWS服务延伸…

详解Redis如何持久化

引言 本文介绍了 Redis 的两种持久化方式&#xff1a;RDB 和 AOF。RDB 按时间间隔快照存储&#xff0c;AOF 记录写操作。阐述了它们的配置、工作原理、恢复数据的方法、性能与实践建议&#xff0c;如降低 fork 频率、控制内存等&#xff0c;还提到二者可配合使用&#xff0c;最…