离散卡尔曼滤波器算法详解及重要参数(Q、R、P)的讨论

  1. 公开数据集中文版详细描述参考前文:https://editor.csdn.net/md/?not_checkout=1&spm=1011.2124.3001.6192
  2. 神经元Spike信号分析参考前文:https://blog.csdn.net/qq_43811536/article/details/134359566?spm=1001.2014.3001.5501
  3. 神经元运动调制分析参考前文:https://blog.csdn.net/qq_43811536/article/details/134401004?spm=1001.2014.3001.5501

目录

  • 摘要
  • 1. 离散卡尔曼滤波器算法
    • 1.1 理论概述
    • 1.2 算法细节
  • 2. 神经元的运动解码分析
    • 2.1 公开数据集
    • 2.2 Q、R、P 的定义及初值设置
    • 2.3 KF 的解码结果
    • 2.4 不同Q、R、P 初始值对计算结果的影响


摘要

1960年,卡尔曼发表了他著名的用递归方法解决离散数据线性滤波问题的论文。从那以后,得益于数字计算技术的进步,卡尔曼滤波器已成为推广研究和应用的主题,尤其是在自主或协助导航领域。

卡尔曼滤波器由一系列递归数学公式描述。它们提供了一种高效可计算的方法来估计过程的状态,并使估计均方误差最小。卡尔曼滤波器应用广泛且功能强大:它可以估计信号的过去和当前状态,甚至能估计将来的状态,即使并不知道模型的确切性质。

本文简单介绍了离散卡尔曼滤波器(以下简称“KF”)的计算理论,同时基于猕猴感觉运动皮层神经元的运动解码分析讨论KF的三个重要参数Q、R、P对算法的影响。


1. 离散卡尔曼滤波器算法

1.1 理论概述

卡尔曼滤波器用反馈控制的方法估计过程状态:滤波器估计过程某一时刻的状态,然后以(含噪声的)测量变量的方式获得反馈。因此卡尔曼滤波器可分为两个部分:时间更新方程和测量更新方程。时间更新方程负责及时向前推算当前状态变量和误差协方差估计的值,以便为下一个时间状态构造先验估计。测量更新方程负责反馈——也就是说,它将先验估计和新的测量变量结合以构造改进的后验估计。

1.2 算法细节

  • 时间更新方程也可视为预估方程,测量更新方程可视为校正方程,分别对应 Figure 1中的“时间更新(预测)”和“测量更新(校正)”。最后的估计算法成为一种具有数值解的预估-校正算法。

  • 实际系统中,过程激励噪声协方差矩阵 Q 和观测噪声协方差矩阵 R 可能会随每次迭代计算而变化。但在这儿我们假设它们是常数。

  • 测量更新方程首先做的是计算卡尔曼增益 K k K_k Kk,其次便测量输出以获得 z k z_k zk ,然后按(2)式产生状态的后验估计。最后按(3)式估计状态的后验协方差。

  • 计算完时间更新方程和测量更新方程,整个过程再次重复。上一次计算得到的后验估计被作为下一次计算的先验估计。这种递归推算是卡尔曼滤波器最吸引人的特性之一——它比其它滤波器更容易实现:例如维纳滤波器1 ,每次估计必须直接计算全部数据,而卡尔曼滤波器每次只根据以前的测量变量递归计算当前的状态估计。
    在这里插入图片描述

Figure 1. 卡尔曼滤波器工作原理图

2. 神经元的运动解码分析

2.1 公开数据集

  • 网址:Nonhuman Primate Reaching with Multichannel Sensorimotor Cortex Electrophysiology 2
  • Session:
    • " indy_20170124_01 "

2.2 Q、R、P 的定义及初值设置

  • Q:Q矩阵表示系统模型中过程噪声的协方差矩阵。它描述了系统状态在时间上的变化和不确定性。通常情况下,Q矩阵的初始值可以根据系统的动态范围和预期的噪声水平进行估计。本实验中Q的初始值为卡尔曼滤波器训练过程中转移矩阵的协方差。
  • R:R矩阵表示测量模型中观测噪声的协方差矩阵。它描述了观测值和系统真实状态之间的不一致性或不确定性。R矩阵的初始值可以通过对测量数据进行统计分析来估计。本实验中R的初始值为卡尔曼滤波器训练过程中观测数据(测量矩阵)的协方差。
  • P:P矩阵表示状态估计的协方差矩阵,它描述了状态估计和真实状态之间的不确定性。P矩阵的初始值可以根据系统的初始状态估计精度进行设置。本实验中P的初始值为零矩阵,表示对初始状态估计的高置信度。

2.3 KF 的解码结果

使用2.2节中 Q、R、P 的初始值设置卡尔曼滤波器对公开数据集" indy_20170124_01 "进行解码,并采用十折交叉验证进行评估,Figure 2 为第4折上前100个样本的真实(蓝色)和预测(黄色)曲线,上下分别代表x和y方向上的位置、速度和加速度。

在这里插入图片描述

Figure 2. 卡尔曼滤波器的部分解码结果

2.4 不同Q、R、P 初始值对计算结果的影响

Figure 3 展示了Q、R、P分别为上一节默认取值(Figure 3a)和高斯噪声(Figure 3b-d)时的部分解码结果,每一个子图从左到右由十折交叉验证中的第1、5、10折组成。可以看到R的取值对结果影响最大,只要不合理就会导致预测结果无意义;而P的取值影响最小,预测结果仅在前几个sample上会出现较大幅度的波动。

在这里插入图片描述

Figure 3. 不同Q、R、P 初始值的部分计算结果. a. 采用上一节的默认初始值. b. 将Q设置为均值为0,方差为100的高斯噪声. c. 将R设置为均值为0,方差为100的高斯噪声. d. 将P设置为均值为0,方差为100的高斯噪声.. 卡尔曼滤波器的部分解码结果



Table 1 记录了设置不同Q、R、P 初始值时卡尔曼滤波器的解码性能,其中 d i a g ( n ) diag(n) diag(n)代表对角元素为n的对角矩阵。这些结果进一步证明上一段的结论,同时P设置为对角矩阵时可以最大程度地保持解码器的性能。

Table 1. 不同Q、R、P 初始值的解码性能

在这里插入图片描述


创作不易,麻烦点点赞和关注咯!

  1. Brown, R. G. and P. Y. C. Hwang. 1992. Introduction to Random Signals and Applied Kalman Filtering, Second Edition, John Wiley & Sons, Inc. ↩︎

  2. Makin, J. G., O’Doherty, J. E., Cardoso, M. M. B. & Sabes, P. N. (2018). Superior arm-movement decoding from cortex with a new, unsupervised-learning algorithm. J Neural Eng. 15(2): 026010. doi:10.1088/1741-2552/aa9e95 ↩︎

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

如若内容造成侵权/违法违规/事实不符,请联系编程知识网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

uni-app报错“本应用使用HBuilderX x.x.x 或对应的cli版本编译,而手机端SDK版本是x.x.x不匹配的版本可能造成应用异常”

uniapp开发的一个跨平台软件,在安卓模拟器上启动的时候报警告: 官方给的解释:uni-app运行环境版本和编译器版本不一致的问题 - DCloud问答 解决办法有两个 方法一:添加忽略警告的配置 项目根目录下找到 manifest.json&#xf…

14——2

这道题目前面看不懂可以看比如后面的 这里1/3是因为S100的长度n3(100占3位),然后1出现的占比是1/3(1在第一位),0出现的占比是2/3,因为0出现了2次,(第二位,第…

应用亚马逊云科技,Share Creators1个月内上线生成式AI生图模块

随着生成式AI在全球范围爆火,如何充分利用生成式AI自动生成内容提高创作效率已成为设计领域创新的关键突破口。对于设计行业和游戏行业的众多企业和团队而言,管理数字资产的能力是其实现高效创作最大的挑战之一,也是在降本增效的流程中非常容…

C语言之深入指针(四)

C语言之深入指针 1 函数指针变量 1.1 函数指针变量的创建 整型指针是存放整型数据的指针 数组指针是存放数组地址的指针 那么函数指针变量就是存放函数地址的指针,可以通过函数的地址来调用函数 那么函数是否有自己的地址呢?我们可以写一段代码来看一下 #incl…

hadoop 大数据环境配置 ssh免密登录 centos配置免密登录 hadoop(四)

1. 找到.ssh文件夹 cd ~ # 在.ssh文件夹下生成 # cd .ssh 2. 生成私钥公钥命令: ssh-keygen -t rsa3. 发送到需要免密机器: # hadoop23 是我做了配置。在host配置得机器ip和名称得映射 ssh-copy-id hadoop23 4. 成功

【Linux】-文件系统的详解以及软硬链接

💖作者:小树苗渴望变成参天大树🎈 🎉作者宣言:认真写好每一篇博客💤 🎊作者gitee:gitee✨ 💞作者专栏:C语言,数据结构初阶,Linux,C 动态规划算法🎄 如 果 你 …

STM32中使用看门狗实现系统自动复位

STM32中的看门狗(Watchdog)是一种用于监控系统运行状态并在系统故障或死锁时执行自动复位的硬件功能。在本文中,我将介绍如何在STM32微控制器中使用看门狗来实现系统的自动复位。下面是详细的解释: 一、看门狗原理简介 看门狗是一种独立的硬件计时器&am…

【nlp】2.1 认识RNN模型

认识RNN模型 1 什么是RNN模型2 RNN模型的作用3 RNN模型的分类:1 什么是RNN模型 RNN(Recurrent Neural Network),,中文称作循环神经网络,它一般以序列数据为输入, 通过网络内部的结构设计有效捕捉序列之间的关系特征,一般也是以序列形式进行输出。 一般单层神经网络结构:…

【Java 进阶篇】JQuery DOM操作:CRUD操作的前端魔法

在前端开发的舞台上,CRUD(Create, Read, Update, Delete)操作是一种极为重要的技能,它涉及对页面元素的增删改查。而JQuery,这位前端开发的魔法师,为我们提供了便捷而强大的方法,使得CRUD操作变…

hadoop 大数据集群环境配置 配置hadoop配置文件 hadoop(七)

1. 虚拟机的三台机器分别以hdfs 存储, mapreduce计算,yarn调度三个方面进行集群配置 hadoop 版本3.3.4 官网:Hadoop – Apache Hadoop 3.3.6 jdk 1.8 三台机器尾号为:22, 23, 24。(没有用hadoop102, 103,10…

Linux使用Docker完整安装Superset,同时解决please use superset_config.py to override it报错

文章目录 Docker安装Superset流程1. 首先获取镜像2. 生成SSL3. 创建Superset容器4. 更新数据库5. 测试访问Superset Docker安装Superset流程 1. 首先获取镜像 docker pull amancevice/superset2. 生成SSL 接下来我们运行一些额外的程序: openssl rand -base64 4…

基于Rabbitmq和Redis的延迟消息实现

1 基于Rabbitmq延迟消息实现 支付时间设置为30,未支付的消息会积压在mq中,给mq带来巨大压力。我们可以利用Rabbitmq的延迟队列插件实现消息前一分钟尽快处理 1.1定义延迟消息实体 由于我们要多次发送延迟消息,因此需要先定义一个记录消息…