• 卡尔曼滤波


    卡尔曼滤波算法介绍

    一、 滤波简介

    滤波:通过一定的算法将信号中特定波段频率滤除,排除可能的随机干扰,提高检测精度的一种手段。

    功能:平滑、预测,微分、积分、信号分离和噪声抑制等功能。

    信号种类:

    a)    数字滤波:使用软件编程/可编程逻辑器件设计

    b)    模拟滤波:采用电容,电阻和电感的组合来完成。

    算法(频域/时域):

    a)    经典滤波:信号和噪声处于不同的频段。高通、低通、带通、带阻滤波器。

    b)    现代滤波:利用信号和噪声的随机统计特性。维纳滤波,Kalman滤波,自适应滤波,小波变换等。

    二、 状态估计原理简介

    状态估计是卡尔曼滤波的重要组成部分。

    估计问题:  观测数据(可以直接得到)-> 定量判断 ->  随机状态量(很难直接得到)

    状态估计:观测数据(输入输出:外部特性)-> 定量判断 ->内部状态量(动态规律,很难直接得到)< --- >信号平滑/插值(过去)信号的滤波(现在)信号的预测(将来)

    状态估计对于了解和控制一个系统具有重要意义。

    状态估计方法:最小二乘估计,线性最小方差估计、最小方差估计、递推最小二乘估计等。

    卡尔曼滤波算法即为递推最优估计理论,采用状态空间描述法,以线性最小均方误差为估计准则来得到对状态变量的最优估计。

    三、 卡尔曼滤波引例

    卡尔曼滤波:是一种高效率的递归滤波器(自回归滤波器),它能够从一系列完全包含噪声的测量中,估计动态系统的状态。

    基本思想:采用信号与噪声的状态空间模型,利用前一时刻的估计值和现时刻的观测值来更新对状态变量的估计,求出现在时刻的估计值。它适合于实时处理和计算机运算。

    实质:由测量值重构系统的状态向量。它以“预测—实测—修正”的顺序递推,根据测量值来消除随机干扰,再现系统的状态。

    卡尔曼滤波的两个重要假设:

    1. 被建模的系统是线性的:K时刻的系统状态可以用某个矩阵与k-1时刻的系统状态的乘积表示。
    2. 影响测量的噪声属于高斯分布的白噪声:噪声与时间不相关,且只用均值和协方差就可以准确地建模。

    问题描述

    已知条件:    房间温度的当前感觉值               都带有误差

                           房间温度计的当前读数

    希望得到      · 五分钟以后房间温度的实际值

     

                  感觉值+测量值  ?=  未来时刻的真实值

    l  预测:根据K-1时刻温度的最优估计值预测K仕客德温度为23度,其高斯噪声的偏差是5度(设K-1时刻温度的最优估算的偏差是3,自己预测的不确定度是4度,它们平方相加再开方,就是5)。

    l  预测:从温度计那里得到K时刻的温度值,假设是25度,同时刻值的偏差是4度。

    l  更新:根据预测误差和观测误差的协方差有kg^2=5^2/(5^2+4^2),即kg=0.78,则可估算出K时刻的实际温度值(最优估计)是:23+0.78*(25-23)=24.56度。

    递推关键:由此可知,进行K+1时刻的最优估计,需要K时刻的最优估计值和其偏差。偏差计算:((1-kg)*5^2)^0.5=2.35。这里的5就是上面K时刻温度预测为23度时的偏差,得出2.35就是K时刻估算出的最优温度值的偏差(对应上面的3)。

    卡尔曼滤波器不断的把covariance递归,从而估算出最优的温度值。其运行的很快,只保留了上一时刻的covariance。

  • 相关阅读:
    Unity3d资源管理分析
    Unity3D之MonoBehaviour的可重写函数整理
    Unity3D脚本学习——运行时类
    A*寻路初探(转载)
    360sdk网游支付服务
    总结使用Unity 3D优化游戏运行性能的经验
    Unity3D之Lightmap详解
    「luogu2714」四元组统计
    「BZOJ1066」[SCOI2007]蜥蜴
    「luogu1251」餐巾计划问题
  • 原文地址:https://www.cnblogs.com/TheFly/p/13137481.html
Copyright © 2020-2023  润新知