首页 > 其他分享 >卡尔曼滤波 学习记录

卡尔曼滤波 学习记录

时间:2022-10-18 10:44:21浏览次数:114  
标签:状态 记录 卡尔曼滤波 方差 矩阵 残差 观测 学习 协方差

1.  卡尔曼滤波的5个公式

             

    F:  状态转移矩阵

    P: 状态协方差矩阵

   Q:  状态转移协方差矩阵

      H:  观测矩阵

   R:  观测噪声方差 

      K:  卡尔曼系数 滤波增益阵,它首先权衡预测状态协方差矩阵 P 与 观测值矩阵 R的大小,以此来觉得更倾向于相信预测模型还是详细观测模型。 

            如果相信预测模型多一点,那么这个残差的权重就会小一点。反之亦然,如果相信观察模型多一点,这个残差的权重就会大一点。不仅如此,

            滤波增益阵还负责把残差的表现形式从观测域转换到状态域。

  Xt :初值设置;

           观测值已知的前两个点来确定。

 P的定义:状态协方差矩阵,P矩阵初值的设定公式如下:

         

 

 是径向距离的观测噪声方差,是方位角的观测噪声方差,这是P矩阵在极坐标系下的表示;

 R的定义:观测噪声方差 ;在匀速直线运动中,如果是极坐标系下的话,R矩阵的形式是:

             

matlab 算法测试代码: 

Z =(1:100);    %  观测值 
noise = randn(1,100);     % 方差为1的高斯噪声
Z = Z + noise ;

X =[0;1];      %  状态  (观测值已知的前两个点来确定)
P =[1 3;3 5];  %  状态协方差矩阵  (正对角线的是两个维度的方差,反对角线两个值是相等的,是他们的协方差)
F =[1 1;0 1];  %  状态转移矩阵 (描述了给定初始状态的状态如何随时间传播,对于线性时不变(LTI)系统,这是一个常数矩阵)
Q =[0.00001 0;0 0.0001];   %状态转移协方差矩阵 (认为很小)
H =[1 0];      %  观测矩阵
R = 1;         %  观测噪声方差 

figure ;
hold on ;

for i =1:100 
    % 预测值  
    X_= F * X ;
    P_= F * P * F'+ Q;      % 噪声协方差矩阵传递 + Q 协方差本身带来的噪声
    
    K = P_* H'/(H* P_* H'+ R); % 卡尔曼系数  滤波增益阵,它首先权衡预测状态协方差矩阵 P 与 观测值矩阵 R的大小,以此来觉得更倾向于相信预测模型还是详细观测模型。
                               % 如果相信预测模型多一点,那么这个残差的权重就会小一点。反之亦然,如果相信观察模型多一点,这个残差的权重就会大一点。不仅如此,滤
                               % 波增益阵还负责把残差的表现形式从观测域转换到状态域。
    X = X_+ K *(Z(i)-H * X_);
    P =( eye(2)- K * H)* P_;
        
    plot(X(1),X(2),'r*');      % 画点,横轴表示位置,纵轴表示速度
 end

 

标签:状态,记录,卡尔曼滤波,方差,矩阵,残差,观测,学习,协方差
From: https://www.cnblogs.com/susiesnai-sun/p/16801817.html

相关文章

  • 2022-10-17 上涨过程中的下跌区分,纳斯达克最近的2次下跌记录
     先看第一段下跌1.是日线的下跌一段,然后一个阳线的单K线反转。注意,这里虽然是单根K线很强,但是整体还处于下降段。所以之后的调整还是很重要的2.30分钟还是处于一个中......
  • docker学习16-Docker 容器设置时区
    前言最近遇到一个问题,在本机部署操作时,获取本机当前时间存到mysql数据库,时间是当前北京时间没问题。但是用Docker容器部署项目,发现时间少了8个小时,于是想到是docker容器......
  • QDAC使用记录-QJson
    一:数组创建varFJson:=TQJson.Create;try withFJson.AddArray('Arr')do begin  fori:=0to1do  begin   withadddo   begin  ......
  • 《ZLToolKit源码学习笔记》链接--秦时小(转载)
    《ZLToolKit源码学习笔记》(1)VS2019源码编译《ZLToolKit源码学习笔记》(2)工具模块之日志功能分析(本文)《ZLToolKit源码学习笔记》(3)工具模块之终端命令解析《ZLToolKit源码......
  • 【Python基础学习】第二节 列表操作
    Python基础学习之列表操作1.列表的增,删,改,查1.1列表的增加,常用的方法有:append,extent,incertappend()在列表的最后面增加元素;heros=['马里奥','路易斯','林......
  • ansible学习笔记04(最佳实践)
    使用过滤和插件转换数据1、使用过滤器处理变量1.1ansiblefilteransible应用变量到playbook并且使用jinja2表达式来使用变量。例如下面的J2表达式中的变量使用两个大......
  • dns登录方式记录(资产登记过程记录)
    1.enterodlpostgresqldatabase进入postgresql数据库,选择1smart_scan-e 该命令实际上会进去postgresql数据库2.查看ip等信息select*fromdns_server_info......
  • Vue面试题35:什么是递归组件?(总结自B站up主‘前端杨村长’视频,仅供自用学习)
    分析递归组件我们用的比较少,但是在Tree、Menu这类组件中会被用到;体验组件通过组件名称引用它自己,这种情况就是递归组件<template><li><div>{{model.......
  • QDAC使用记录-QLog
    一:日志发送到远程syslog服务器:varAWriter:=TQLogSocketWriter.Create;AWriter.ServerHost:=127.0.0.1;//远程服务器地址AWriter.ServerPort:=514; //远......
  • 学习python-Day75
    运维的本质运维:运行维护应用程序岗位需求:自动化运维、DBA、docker+K8s...运维职责:尽可能保证应用程序24小时不间断运行尽可能保证数据的安全尽可能提升程序的......