回声消除-卡尔曼滤波

news2024/9/25 21:18:48

卡尔曼滤波

卡尔曼滤波的设计过程中需要定义两个变量,一个是状态量,另一个是观测量

状态量

  • 状态量是跟踪目标。将状态量记作 x n \mathbf{x}_n xn,状态量的协方差矩阵记作 P n \mathbf{P}_n Pn,可以由前一个时刻的状态,估计当前的状态
  • 估计过程表示为: x n = F n x n − 1 \mathbf{x}_n=\mathbf{F}_n\mathbf{x}_{n-1} xn=Fnxn1,其中 x n \mathbf{x}_n xn是一个 N ∗ 1 N*1 N1的列向量(小写粗体), F n \mathbf{F}_n Fn是一个 N ∗ N N*N NN的矩阵(大写粗体)
  • 数学理论:若 x n \mathbf{x}_n xn的协方差矩阵为 P n \mathbf{P}_n Pn,那么 F n x n \mathbf{F}_n\mathbf{x}_n Fnxn的协方差矩阵为 F n P n F n T \mathbf{F}_n\mathbf{P}_n\mathbf{F}_n^T FnPnFnT
  • P n = c o v ( x n ) = c o v ( F n x n − 1 ) = F n P n − 1 F n T + Q \mathbf{P}_n=cov(\mathbf{x}_n)=cov(\mathbf{F}_n\mathbf{x}_{n-1})=\mathbf{F}_n\mathbf{P}_{n-1}\mathbf{F}_n^T+\mathbf{Q} Pn=cov(xn)=cov(Fnxn1)=FnPn1FnT+Q,其中 Q \mathbf{Q} Q是为了增加协方差矩阵的不确定性

观测量

  • 由观测量可以预测状态量。将观测量记作 z n \mathbf{z}_n zn,观测量的协方差矩阵记作 R n \mathbf{R}_n Rn,观测量与状态量之间存在映射关系
  • 映射关系表示为: z n = H n x n \mathbf{z}_n=\mathbf{H}_n\mathbf{x}_n zn=Hnxn R n = H n P n H n T \mathbf{R}_n=\mathbf{H}_n\mathbf{P}_n\mathbf{H}_n^T Rn=HnPnHnT,其中 z n \mathbf{z}_n zn是一个 M ∗ 1 M*1 M1的列向量, R n \mathbf{R}_n Rn是一个 M ∗ M M*M MM的矩阵, H n \mathbf{H}_n Hn是一个 M ∗ N M*N MN的矩阵
  • 根据前一个时刻的状态可以估计当前的状态,根据观测量可以映射出当前的状态,但是这两种方法可能都不够准确,因此需要对它们俩的估计结果取一个交集
  • 根据两个量的均值和协方差矩阵,得到状态量和观测量的分布,然后计算联合分布,将其作为新的状态量

在这里插入图片描述

联合分布的更新过程

  • 卡尔曼增益
    K n = P n H n T ( H n P n H n T + R n ) − 1 \mathbf{K}_n=\mathbf{P}_n\mathbf{H}_n^T(\mathbf{H}_n\mathbf{P}_n\mathbf{H}_n^T+\mathbf{R}_n)^{-1} Kn=PnHnT(HnPnHnT+Rn)1
  • 估计过程
    x n + 1 = x n + K n ( z n − H n x n ) \mathbf{x}_{n+1}=\mathbf{x}_{n}+\mathbf{K}_n(\mathbf{z}_n-\mathbf{H}_n\mathbf{x}_n) xn+1=xn+Kn(znHnxn)
  • 协方差矩阵
    P n + 1 = P n − K n H n P n \mathbf{P}_{n+1}=\mathbf{P}_{n}-\mathbf{K}_n\mathbf{H}_n\mathbf{P}_n Pn+1=PnKnHnPn

具体到AEC任务

  • 卡尔曼滤波预测公式
    x n = F n x n − 1 P n = F n P n − 1 F n T + Q \begin{aligned} \mathbf{x}_n&=\mathbf{F}_n\mathbf{x}_{n-1} \\ \mathbf{P}_n&=\mathbf{F}_n\mathbf{P}_{n-1}\mathbf{F}_n^T+\mathbf{Q} \end{aligned} xnPn=Fnxn1=FnPn1FnT+Q
  • 卡尔曼滤波更新公式
    K n = P n H n T ( H n P n H n T + R n ) − 1 x n + 1 = x n + K n ( z n − H n x n ) P n + 1 = P n − K n H n P n \begin{aligned} \mathbf{K}_n&=\mathbf{P}_n\mathbf{H}_n^T(\mathbf{H}_n\mathbf{P}_n\mathbf{H}_n^T+\mathbf{R}_n)^{-1} \\ \mathbf{x}_{n+1}&=\mathbf{x}_{n}+\mathbf{K}_n(\mathbf{z}_n-\mathbf{H}_n\mathbf{x}_n) \\ \mathbf{P}_{n+1}&=\mathbf{P}_{n}-\mathbf{K}_n\mathbf{H}_n\mathbf{P}_n \end{aligned} Knxn+1Pn+1=PnHnT(HnPnHnT+Rn)1=xn+Kn(znHnxn)=PnKnHnPn
  • AEC的预测目标是回声路径 w n \mathbf{w}_n wn,假设回声路径是稳定的,可由N阶线性滤波器模拟,那么 w n = w n − 1 \mathbf{w}_n=\mathbf{w}_{n-1} wn=wn1 w n \mathbf{w}_n wn是一个 N ∗ 1 N*1 N1的列向量,取 x n = w n \mathbf{x}_n=\mathbf{w}_{n} xn=wn,从而 F n = I \mathbf{F}_{n}=\mathbf{I} Fn=I P n = P n − 1 + Q \mathbf{P}_{n}=\mathbf{P}_{n-1}+\mathbf{Q} Pn=Pn1+Q
  • AEC的滤波输出 e ( n ) = d ( n ) − w n T x n e(n)=d(n)-\mathbf{w}_n^T\mathbf{x}_n e(n)=d(n)wnTxn,其中 d ( n ) d(n) d(n)是麦克风当前接收信号, x n \mathbf{x}_n xn是参考信号,同样为 N ∗ 1 N*1 N1的列向量
  • AEC的观测量是麦克风当前接收信号 d ( n ) d(n) d(n) d ( n ) = x n T w n + e ( n ) d(n)=\mathbf{x}_n^T\mathbf{w}_n+e(n) d(n)=xnTwn+e(n),取 z n = d ( n ) \mathbf{z}_n=d(n) zn=d(n),从而 H n = x n T \mathbf{H}_n=\mathbf{x}_{n}^T Hn=xnT(将 e ( n ) e(n) e(n)的期望视作0, z n = H n x n \mathbf{z}_n=\mathbf{H}_n\mathbf{x}_n zn=Hnxn), R n = e ( n ) 2 + δ \mathbf{R}_n=e(n)^2+\delta Rn=e(n)2+δ,其中 δ \delta δ是小常数
  • 注意:因为 z n = d ( n ) \mathbf{z}_n=d(n) zn=d(n),所以此时的 z n \mathbf{z}_n zn是一个常数,从而 R n \mathbf{R}_n Rn也是一个常数, H n \mathbf{H}_n Hn是一个 1 ∗ N 1*N 1N的行向量
  • 代入更新公式
    K n = P n x n ( x n T P n x n + R n ) − 1 w n + 1 = w n + K n ( d ( n ) − x n T w n ) = w n + K n e ( n ) P n + 1 = P n − K n x n T P n \begin{aligned} \mathbf{K}_n&=\mathbf{P}_n\mathbf{x}_n(\mathbf{x}_n^T\mathbf{P}_n\mathbf{x}_n+\mathbf{R}_n)^{-1} \\ \mathbf{w}_{n+1}&=\mathbf{w}_{n}+\mathbf{K}_n(d(n)-\mathbf{x}_n^T\mathbf{w}_n)=\mathbf{w}_{n}+\mathbf{K}_{n}e(n) \\ \mathbf{P}_{n+1}&=\mathbf{P}_{n}-\mathbf{K}_n\mathbf{x}_n^T\mathbf{P}_n \end{aligned} Knwn+1Pn+1=Pnxn(xnTPnxn+Rn)1=wn+Kn(d(n)xnTwn)=wn+Kne(n)=PnKnxnTPn
  • 综合
    P n = P n − 1 + Q e ( n ) = d ( n ) − w n T x n R n = e ( n ) 2 + δ K n = P n x n ( x n T P n x n + R n ) − 1 w n + 1 = w n + K n e ( n ) P n + 1 = P n − K n x n T P n \begin{aligned} \mathbf{P}_{n}&=\mathbf{P}_{n-1}+\mathbf{Q} \\ e(n)&=d(n)-\mathbf{w}_{n}^T\mathbf{x}_{n} \\ \mathbf{R}_n&=e(n)^2+\delta \\ \mathbf{K}_n&=\mathbf{P}_n\mathbf{x}_n(\mathbf{x}_n^T\mathbf{P}_n\mathbf{x}_n+\mathbf{R}_n)^{-1} \\ \mathbf{w}_{n+1}&=\mathbf{w}_{n}+\mathbf{K}_{n}e(n) \\ \mathbf{P}_{n+1}&=\mathbf{P}_{n}-\mathbf{K}_n\mathbf{x}_n^T\mathbf{P}_n \end{aligned} Pne(n)RnKnwn+1Pn+1=Pn1+Q=d(n)wnTxn=e(n)2+δ=Pnxn(xnTPnxn+Rn)1=wn+Kne(n)=PnKnxnTPn

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

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

视频集中存储/云存储/磁盘阵列EasyCVR平台接入RTSP设备出现离线情况的排查

安防视频监控/视频集中存储/云存储/磁盘阵列EasyCVR平台可拓展性强、视频能力灵活、部署轻快,可支持的主流标准协议有国标GB28181、RTSP/Onvif、RTMP等,以及支持厂家私有协议与SDK接入,包括海康Ehome、海大宇等设备的SDK等。平台既具备传统安…

20天部署,支持每天上百家门店咖啡物料配送,顺丰供应链是这样做到的

走进顺丰供应链华北智能仓,映入眼帘是多台自如穿梭的智能搬运机器人和自动高效的分拣设备。1200平米内,拆零输入、分货、按订单取出……通过自动化解决方案,作业效率大幅提升。 这是顺丰供应链与全球仓储机器人引领者极智嘉(Geek)的又一次智…

如何快速搭建app自动化环境编写用例?

使用Airtest 作为测试开发工程师,快速搭建app自动化环境并编写用例可以使用Airtest解决方案来实现。Airtest是一款基于Python的全平台UI自动化测试框架,支持多种移动设备和模拟器,同时集成了丰富的图像识别和手势操作功能。 以下是使用Airt…

有理数思维导图怎么画?这种方法绘制很方便

有理数思维导图怎么画?为什么要绘制思维导图?因为它可以帮助我们更好地组织和理解信息。在数学中,绘制有理数思维导图也可以帮助我们更好地理解有理数的概念和性质。 有理数是我们日常生活中经常接触到的数学概念,包括正整数、负整…

动态内存分配及管理——C语言

目录 一、为什么存在动态内存分配 二、动态内存函数介绍 2.1 malloc 2.2 free 2.3 calloc 2.4 realloc 三、常见的动态内存错误 3.1 对NULL指针的解引用操作 3.2 对动态开辟空间的越界访问 3.3 对非动态开辟内存使用free释放 3.4 使用free释放一块动态开辟内存的一部…

AUTOSAR NvM协议栈集成方法

一、涉及的模块 Bsw:NvM、MemIf、Fee、Crc Mcal:Fls 其中一些芯片厂商的MCAL也会提供Fee模块,本文选择使用ETAS提供的Fee模块,好处是Fee的Block不需要手动配,在NvM中配好了Block之后,生成Bsw代码的同时会…

c语言——查找特定字符在字符串中出现的次数

fgets 函数用于从标准输入(stdin)中读取一行字符串, 并将其存储在指定的字符数组 str 中。 sizeof str/sizeof str[0] 是用来计算字符数组 str 的大小。 这个表达式计算的结果是字符数组 str 可以容纳的元素个数(包括…

linux vscode 下开发

linux vscode 下开发 javajdk插件 java jdk 各种JAVA JDK的镜像分发 编程宝库 - 技术改变世界 jdk 镜像 ubuntu22.04 安装 # Linux x64 64位 jdk-8u351-linux-x64.tar.gztar -zxf jdk-8u351-linux-x64.tar.gz mv jdk1.8.0_351 jdk8/ vim ~/.profile expo…

KEY接口ESD静电保护器件:DW05D5BC-B-E和DW05MS-S

静电在我们日常生活中,可谓是无处不在,我们身上和周围环境就带有很高的静电电压。都知道,ESD静电放电会对电子设备带来威胁甚至损坏。为此,电子设备中按键部位、接口部位以及触摸屏等防静电保护措施是非常有必要的。针对按键KEY接…

Java网络编程(一)网络基础

概述 计算机网络是指将地理位置不同的具有独立功能的多台计算机及其外部设备,通过通信线路连接起来,在网络操作系统、网络管理软件及网络通信协议的管理和协调下,实现资源共享和信息传递 网络分类 局域网(LAN) 局域网是一种在小区域内使用的,由多台计算机组成的网络,覆盖范围…

如何使用Python获取SAP Temporary key 临时密钥

什么是Sap 临时密钥? SAP 临时密钥是用于激活 SAP 软件的一种许可证,只能在有限的时间内使用。这些密钥可用于评估目的或在系统迁移期间使用。它们是临时解决方案,通常在一定时间后过期。 如何获取Sap Temporary keys? 临时密钥: 如果创建…

Web网页浏览器远程访问jupyter notebook服务器【内网穿透】

文章目录 前言1. Python环境安装2. Jupyter 安装3. 启动Jupyter Notebook4. 远程访问4.1 安装配置cpolar内网穿透4.2 创建隧道映射本地端口 5. 固定公网地址 前言 Jupyter Notebook,它是一个交互式的数据科学和计算环境,支持多种编程语言,如…

【仿写tomcat】五、响应静态资源(访问html页面)、路由支持以及多线程改进

访问html页面 如果我们想访问html页面其实就是将本地的html文件以流的方式响应给前端即可,下面我们对HttpResponseServlet这个类做一些改造 package com.tomcatServer.domain;import com.tomcatServer.utils.ScanUtil;import java.io.IOException; import java.io…

全国产EtherCAT运动控制边缘控制器(二):统一的上位机API接口

上节课程我们介绍了全国产EtherCAT运动控制边缘控制器ZMC432H的硬件接口与功能,本节课程我们主要讲解一下正运动API函数封装原理以及自定义API封装例程。 一、功能简介 全国产EtherCAT运动控制边缘控制器ZMC432H是正运动的一款软硬件全国产自主可控,运…

Genoss GPT简介:使用 Genoss 模型网关实现多个LLM模型的快速切换与集成

一、前言 生成式人工智能领域的发展继续加速,大型语言模型 (LLM) 的用途范围不断扩大。这些用途跨越不同的领域,包括个人助理、文档检索以及图像和文本生成。ChatGPT 等突破性应用程序为公司进入该领域并开始使用这项技术进行构建铺平了道路。 大公司正…

SOLIDWORKS有限元分析

SOLIDWORKS是一款广泛使用的三维计算机辅助设计软件,同时它还具有强大的有限元分析功能。有限元分析是一种工程分析方法,它将复杂的实体分解成许多小的有限元素,以便对其进行数学建模和分析。SOLIDWORKS的有限元分析功能可以帮助工程师预测和…

nbcio-boot3.1 解决积木报表基于SSTI的任意代码执行漏洞,积木报表版本从1.4.0升级到最新的1.6.1

1、积木报表基于SSTI的任意代码执行漏洞 使用JeecgBoot 受影响版本中由于积木报表 /jeecg-boot/jmreport/queryFieldBySql Api接口未进行身份校验,使用 Freemarker 处理用户用户传入的 sql 参数,未经授权的攻击者可发送包含恶意 sql 参数的 http 请求&am…

vue3动态组件

1 、 可以通过 shallowRef 把 可以把组件进行包裹 <template><div><el-button click"setclick(son1)">1111</el-button><el-button click"setclick(son2)">2222</el-button><el-button click"setclick(son…

数字变有趣,分析师的必备利器——奥威BI数据可视化工具

数据分析不仅要在短时间内把数据情况摸清、把数据关联梳理清楚&#xff0c;还需要以一直直观易懂的方式将数据信息准确传递给使用者&#xff0c;便于使用者利用这些数据信息去决策管理&#xff0c;这就是数据可视化。说到这&#xff0c;就不得不请出让数据变得有趣、易懂&#…

解决Java中的“Unchecked cast: java.lang.Object to java.util.List”问题

&#x1f337;&#x1f341; 博主猫头虎 带您 Go to New World.✨&#x1f341; &#x1f984; 博客首页——猫头虎的博客&#x1f390; &#x1f433;《面试题大全专栏》 文章图文并茂&#x1f995;生动形象&#x1f996;简单易学&#xff01;欢迎大家来踩踩~&#x1f33a; &a…