卡尔曼滤波(Kalman Filter)C#测试

2023-09-20 16:21:05

一、操作过程       

刚学了一下卡尔曼滤波,具体原理还没细看,大致过程如下

分为两步,第一步Predict,以下两个公式

第二步Correct,以下三个公式

公式看起来很复杂,其中z_{_{t}}是我们要处理的数据, \hat{x}_{t}是滤波之后的值,其他一些有些是需要给定的,有些是中间值。

        从t=1时刻开始,通过第一步,计算得到的值,给到第二步Correct里,第二步的第二个公式得到t=1时刻的 \hat{x}_{t},即为滤波后的值,t=2时刻,再把第二步在t=1时刻的Correct的那些值,代入到第一步Predict里在计算,再Correct,以此往复,得到所有t时刻的值。

二、代码实现

        试着用C#编写代码实现了下,实际值用了50个数,大致分布是x的平方加一个(0-100)的随机数,如下图黄色线条。 预测值为蓝色线条。

   

void testKF()
{
    double[] xhat = new double[50];   //x 滤波估计值
    double[] P = new double[50];      //滤波估计值协方差矩阵
    double[] xhatminus = new double[50];   //x 估计值
    double[] Pminus = new double[50];    //估计协方差矩阵
    double[] K = new double[50];    //卡尔曼增益

    double R = 0.1;  //测量噪音协方差 R一般可以观测得到,是滤波器的已知条件

    double Q = 0.01;  //过程激励噪声协方差(系统过程的协方差)。
                         //该参数被用来表示状态转换矩阵与实际过程之间的误差。
                         //因为我们无法直接观测到过程信号, 所以 Q 的取值是很难确定的。
                         //是卡尔曼滤波器用于估计离散时间过程的状态变量,也叫预测模型本身带来的噪声,状态转移协方差矩阵


    double[] x = new double[50];  //真实值加噪音
    Random r1 = new Random();           
    for (int i = 0; i < 50; i++)
    {
        x[i] = i*i + r1.NextDouble()*100;
    }

    P[0] = 1.0;
    xhat[0] = 0.0;

    double A=1,H=1;

    for(int i = 1;i < 50;i++)
    {
        //预测
        xhatminus[i] = A*xhat[i - 1];
        Pminus[i] = A*P[i - 1] + Q;

        //更新
        K[i] = Pminus[i]*H / (H*Pminus[i]*H + R);
        xhat[i] = xhatminus[i] + K[i] * (x[i] - H*xhatminus[i]);
        P[i] = (1 - K[i]*H) * Pminus[i];
    }


    chart1.Series[0].Points.Clear();
    chart1.Series[0].Name = "预测值";
    

    for (int i = 1; i < xhatminus.Length; i++)
    {
        chart1.Series[0].Points.AddXY(i, xhatminus[i]);

    }

    Series series = new Series();
    series.ChartType = SeriesChartType.Spline;
    series.Name = "实际值";
    for (int i = 1; i < xhatminus.Length; i++)
    {
        series.Points.AddXY(i, x[i]);

    }

    chart1.Series.Add(series);

}

OK,晚点再细看下原理

 

更多推荐

VMware Workstation Pro各版本下载安装教程

VMwareWorkstationPro下载打开浏览器,输入VMwareWorkstationPro找到VMwareWorkstationPro官网并点击进入,官网地址:https://www.vmware.com/cn/products/workstation-pro.html进入官网首页后可以下载最新版本的VMwa

DBAPI安装教程

安装教程请先下载安装包。默认账户admin/admin。为了便于您理解安装的时候需要配置的参数,请您先学习日志监控相关的功能设计本地部署单机版依赖java环境,先自行在服务器安装jdk8+,并配置环境变量下载安装包解压到需要安装的目录修改conf/application.properties文件中的以下配置#api访问

谷粒商城----rabbitmq

一、为什么要用MQ?三大好处,削峰,解耦,异步。削峰比如秒杀,或者高铁抢票,请求在某些时间点实在是太多了,服务器处理不过来,可以把请求放到MQ里面缓冲一下,把一秒内收到的1万个请求放到队列里面,花10分钟去消费队列里的请求。解耦比如有一个服务A每天都采集数据并计算各种数据,服务B需要调用服务A的接口获取数据,就在A开一

使用 PyTorch 的计算机视觉简介 (2/6)

一、说明在本单元中,我们从最简单的图像分类方法开始——一个全连接的神经网络,也称为感知器。我们将回顾一下PyTorch中定义神经网络的方式,以及训练算法的工作原理。二、数据加载的实践首先,我们使用pytorchcv助手来加载所有数据。!wgethttps://raw.githubusercontent.com/Micr

Buuctf web [SUCTF 2019]EasySQL

又是一道考察sql注入的题1、起手试探(主要看看输入什么内容有正确的回显)101'1'#发现只有在输入1的情况下有正常的回显,输入0或其他字符都没有回显,所以这题就要尝试堆叠注入了。ps:(如果想尝试其他注入方法,输入以下内容需要有回显1'报错1'#正确)2、爆库1;showdatabases;3、报表1;showta

dart 学习 之 字符串插值,空变量 null,避空运算符,条件属性访问,集合字面量,箭头语法

文章目录字符串插值(Stringinterpolation)空变量null避空运算符条件属性访问集合字面量箭头语法字符串插值(Stringinterpolation)下面是一些使用字符串插值的例子:Herearesomeexamplesofusingstringinterpolation:Stringresult字符串

【实战详解】如何快速搭建接口自动化测试框架?Python + Requests

摘要:本文主要介绍如何使用Python语言和Requests库进行接口自动化测试,并提供详细的代码示例和操作步骤。希望能对读者有所启发和帮助。前言随着移动互联网的快速发展,越来越多的应用程序采用WebAPI(也称为RESTfulAPI)作为数据交换的主要方式。针对API进行自动化测试已经变得非常重要,它可以让我们快速地

Vue Hooks 让Vue开发更简单与高效

VueHooks让Vue开发更简单与高效介绍VueHooks是一个基于Vue.js的插件,它提供了一种新的方式来编写Vue组件,使得开发更加简单和高效。它借鉴了ReactHooks的概念,通过使用Hooks,我们可以在不编写类组件的情况下,实现状态管理和生命周期处理。为什么使用VueHooks在传统的Vue开发中,我们

【c语言】详解结构体

目录什么是结构体?结构体的声明结构体变量的创建和初始化匿名结构体类型结构体的自引用结构体的初始化普通初始化指定初始化结构体内存对齐对齐规则默认对齐数的修改结构体传参什么是结构体?在学习每个类型之前我们需要了解其存在的意义,即什么是结构体?为什么要引入结构体这个类型呢?我们可以想象现实中我们是如何处理一个人信息的?假设现

Win10 家庭版 - 解决应用程序无法启动,因为应用程序的并行配置不正确的问题(System Default Context”的激活上下文生成失败)

Win10家庭版-解决应用程序无法启动,因为应用程序的并行配置不正确的问题(SystemDefaultContext”的激活上下文生成失败)系统环境遇到问题试过过程解决办法前天的时候,女盆友公司电脑遇到个问题:几乎所有的exe程序和软件都不能启动或者运行。我的第一个解决办法:重装即可。结果人家嫌挨个重装太麻烦。于是乎,

收款码的费率都是多少

不管是微信还是支付宝,商户最低的收款手续费率可以达到0.2%费率。一般我们普通商户的收款费率一般在0.6左右,当然也有使用0.3的,也就是1万元的费率是30-60块钱,对于一些流水比较大的商家来说,确实很有必要把这个手续费率降低。什么是收款手续费率?因为不管是微信还是支付宝,都是盈利性质的公司,他们开发了收款码这个功能

热文推荐