【数据挖掘】时间序列教程【十】

5.4 通用卡尔曼滤波

上一节中描述的状态空间模型作为观测方程的更一般的公式

        y_t = A_t x_t + V_t 

和状态方程

        x_t = \Theta x_{t-1} + W_t 

        这里y_t是一个p×1 向量x_t是一个k×1 向量, A_t 是一个p×k 矩阵, \Theta 是k×k 矩阵。我们可以想到的V_t\sim\mathcal{N}(0, S)W_t\sim\mathcal{N}(0, R) 

        给定初始状态x_0^0 和P^0_0 ,预测方程为(类似于上面)

                x_1^0 = \Theta x_0^0\\ P_1^0 = \Theta P_0^0\Theta^\prime + R

         并且更新方程是,给定一个新的观察结果y1

                x_1^1 = x_1^0 + K_1(y_1 - A_1 x_1^0)\\ P_1^1 = (I - K_1A_1) P_1^0

这里 

                K_t = P_t^{t-1}A_t^\prime(A_tP_t^{t-1}A_t^\prime + S)^{-1}.

5.5 缺失数据

        从概念上讲,丢失数据在卡尔曼滤波器的框架中很容易处理。该过程有两个步骤:(1)预测步骤,(2)更新步骤,当我们观察新数据时发生。如果缺少一个数据点,我们就无法执行步骤 2,因此我们只需跳过它。我们保留步骤 1 中所做的预测并继续到下一个时间点。

        因此,如果y_t 丢失,我们可以修改更新过程以简单地

                                x_t^t = x_t^{t-1}\\ P_t^t = P_t^{t-1}

5.6 示例:过滤手机的旋转角度

        这是基于加速度计和陀螺仪测量积分的 X 轴方向估计旋转角度图。

Gyro

        回想一下,手机根本没有移动,因此陀螺仪不应该真正记录任何运动。然而,乐器中的自然噪声会随着时间的推移而产生一些变化。特别是,似乎存在轻微的负偏差,因此陀螺仪似乎认为它正在沿负方向轻微旋转。当这种负面偏见随着时间的推移而积分时,其影响会随着时间的推移而累积,如上图所示。

5.7 示例:跟踪汽车的位置

        我们在这里使用的模型将是前面提到的航天器模型的扩展。目标是跟踪沿着笔直道路行驶的汽车的线性(一维)位置。时间 t 时汽车沿这条道路的位置为,建模为

p_t = p_{t-1} + v_{t-1}\Delta t + \frac{1}{2}a_{t-1} \Delta t^2 + w_t

        其中v_{t-1}   是速度,a_{t-1} 是加速度,\Delta t 是测量时间点之间的时间差,w_t 是噪声项。在这种情况下,我们可以将状态向量写为

                x_t = [p_t, v_t, a_t].

        这里令:

        \Theta = \left[\begin{array}{ccc} 1 & \Delta t & \frac{1}{2}\Delta t^2\\ 0 & 1 & \Delta t\\ 0 & 0 & \alpha \end{array} \right]

        在 里α  是表征加速度项状态转换的(已知)系数,则状态方程为

        x_t = \Theta x_{t-1} + w_t

此时:w_t\sim\mathcal{N}(0, \tau^2I)

        对于数据,我们有两个观察结果。一个是表示一维位置的 GPS 坐标(在本例中为经度),另一个是汽车方向的加速度。加速度可以是向前方向(正)或向后方向(负)。数据表示为

        y_t = Ax_t + v_t

这里:

         A = \left[\begin{array}{ccc} 1 & 0 & 0\\ 0 & 0 & 1 \end{array} \right]

        没有直接测量速度的方法。这是汽车随时间变化的 y 轴加速度(以 m/s^2 为单位)。本例中的 y 轴是行进方向。

        这是汽车随时间变化的经度位置,转换为沿道路的距离(以米为单位)。数据的采样率为 20 Hz(每秒 20 次测量),因此绘图的 x 轴以 1/20 秒为单位。

        实际观测到的 GPS 测量是在 20 Hz 下进行的,但我们可能会遇到无法如此频繁地测量数据的情况。例如,加速度是始终可用的惯性测量,但 GPS 测量依赖于可能始终可用或可能不始终可用的卫星。为了模拟可能的数据缺失,我们可以通过对数据进行下采样来对GPS数据进行下采样。在这里,我们只保留每 1,000 个 GPS 值中的一个。卡尔曼滤波算法的结果如下所示。

上述曲线设 \tau = 0.5  且 \sigma =20   , α  被设为 0.64 .

下面是我们减少采样并保留每 200 个 GPS 值之一的图。

        我们可以看到,当 GPS 值可用时,估计状态会尝试跟上它们,但通常需要时间进行自我修正。在上图中,我们有 τ=2,但我们可以通过减小 τ 来改变校正行为。在下图中,我们有 τ=0.5,我们可以看到轨道更加平滑。

        虽然估计状态比较平滑,但也存在较大偏差。因此,在选择调整参数 τ 和 σ 时,需要平衡精度需求和平滑度需求(偏差与方差)。

5.8 示例:估计(模型)火箭的远地点

看看这个由乔·巴纳德 (Joe Barnard) 建造和发射的筒仓发射模型火箭。

这是第一次发射的慢动作版本。

火箭,无论是模型还是真实的,都需要能够随着时间的推移感知它们的位置、速度和方向。大多数情况下,他们需要知道自己是否指向正确或计划的方向,以及是否以正确的速度沿着正确的轨迹行驶。 (如果不是,则可以进行修正,但我们不会在这里讨论这个问题,因为这需要进入控制理论。)

惯性测量单元 (IMU) 中使用的典型仪器是陀螺仪和加速度计。这些仪器可以为机载计算机提供惯性测量,即纯粹在机上进行的测量,无需与外部输入或参考进行任何交互。现代系统通常还具有其他仪器,例如气压高度计(用于高度)、磁力计(用于航向/方向)和 GPS(用于位置)。

这是来自 z 轴(上/下)方向加速度计的数据。

这是气压高度计的数据。

这是使用下采样高度计读数(删除所有其他值)的估计轨迹。

        这是来自同一模型拟合的估计速度。速度过零的点可能就是远地点所在的位置。

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

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

相关文章

华为Harmony应用开发初探

HarmonyOS是一款面向万物互联时代的、全新的分布式操作系统。在传统的单设备系统能力基础上,HarmonyOS提出了基于同一套系统能力、适配多种终端形态的分布式理念,能够支持手机、平板、智能穿戴、智慧屏、车机等多种终端设备,提供全场景(移动办公、运动健康、社交通信、媒体…

外包干了2个月,技术退步明显...

先说一下自己的情况,大专生,18年通过校招进入湖南某软件公司,干了接近4年的功能测试,今年年初,感觉自己不能够在这样下去了,长时间呆在一个舒适的环境会让一个人堕落!而我已经在一个企业干了四年的功能测试…

Linux进程(二)---进程的优先级和环境变量

我想在这先完成上一章的一个未说完的话题.最后一个我们讲到了僵尸进程,是指子进程已经结束,但是父进程还在运行没有来得及回收.此时这个子进程便是僵尸进程. 但是如果父进程运行完了,也没有回收就直接结束了,那这个子进程改由谁维…

用html+javascript打造公文一键排版系统3:获取参数设置、公文标题排版

我们用自定义函数setDocFmt()来实现对公文的排版。 一、获取公文参数值 要对公文进行排版,首先要读取公文“参数设置”区中的参数值。比如公文要求对公文标题的一般规定是:一般用2号小标宋体字,居中显示。标题与正文中间空一行。 这些是“参…

Python控制流程盘点及高级用法、神秘技巧大揭秘!

目录 一、条件语句(If-Elif-Else) 二、循环结构(For和While) 三、异常处理(Try-Except) 四、控制流程的高级用法! 1. 列表解析 2. 生成器表达式 3. 装饰器 One More Thing!&…

Microsoft 宣布今年底关闭开源软件托管平台 CodePlex

Microsoft 宣布,将关闭开源软件托管平台 CodePlex。Microsoft 2006 年推出这项服务,并决定在今年 12 月 15 日将其关闭。 Microsoft 公司副总裁 Brian Harry 在网上博客中写道,人们将可以下载他们的数据档案,Microsoft 正与面向开…

配电柜实时监测?这也太会省力了吧!

现代企业厂房的安全和效率对于业务的成功至关重要。在这个背景下,配电柜监控成为了一项关键的技术。通过实时监测和管理厂房内的配电柜,企业可以确保电力供应的稳定性,提高能源利用效率,并及时发现和解决潜在的故障和安全风险。 配…

matlab学习指南(2):安装工具箱Toolbox的方法(详细图解)

🌅*🔹** φ(゜▽゜*)♪ **🔹*🌅 欢迎来到馒头侠的博客,该类目主要讲数学建模的知识,大家一起学习,联系最后的横幅! 喜欢的朋友可以关注下,私信下次更新不迷路&#xff0…

Uniapp 版本更新

文章目录 前言Uniapp更新确定接口是否能够使用基本代码封装更新软件区别 前言 软件发布之后更新是经常出现的需求。我们希望软件能够自动连网更新软件,而不是重新去手动安装一个apk安装包。不需要更新的软件只有两个,一个是微信小程序,另一个…

openpnp - 汇川 Inovance IS620PS2R8I-IAB-C的参数读取

文章目录 openpnp - 汇川 Inovance IS620PS2R8I-IAB-C的参数读取概述笔记伺服和配套电机型号官方伺服调试软件笔记H00H01H02H03H04H05H06H07H08H09H0AH0BH0CH0DH0FH11H12H16H17H30H31自定义组备注END openpnp - 汇川 Inovance IS620PS2R8I-IAB-C的参数读取 概述 设备中用到了…

学习笔记——vscode界面设置界面缩放级别

使用vscode时,不知道按了什么快捷键,vscode窗口缩放了。 调整方法:设置 > 窗口(window) > Zoom Level

淘宝订单拉取更新历史状态~需求

&#x1f4da;目录 订单接口api需求问题解决 Map<String,TaobaoOrder> 订单接口api 可自行查询官网文档&#xff0c;点击进入 需求 通过接口中has_next 标识判断该时间断是否还有下一页数据,直到该值数据为false时,表面该时间范围内的订单数据获取完成. 拉取完成后需要对…

初阶C语言——指针

Hello&#xff0c;我们又见面了&#xff0c;时间过的好快啊&#xff0c;转眼间也已经写了这么多份博客了&#xff0c;在接下来的一年里&#xff0c;小编也会认真学习的敲代码&#xff0c;我们一起进步&#xff0c;那今天开始讲我们的指针&#xff0c;指针这一章节在C语言的学习…

【K8S系列】深入解析K8S监控

序言 做一件事并不难&#xff0c;难的是在于坚持。坚持一下也不难&#xff0c;难的是坚持到底。 文章标记颜色说明&#xff1a; 黄色&#xff1a;重要标题红色&#xff1a;用来标记结论绿色&#xff1a;用来标记论点蓝色&#xff1a;用来标记论点 Kubernetes (k8s) 是一个容器编…

微服务实例构建成 docker 镜像实例

&#x1f388; 作者&#xff1a;Linux猿 &#x1f388; 简介&#xff1a;CSDN博客专家&#x1f3c6;&#xff0c;华为云享专家&#x1f3c6;&#xff0c;Linux、C/C、云计算、物联网、面试、刷题、算法尽管咨询我&#xff0c;关注我&#xff0c;有问题私聊&#xff01; &…

使用WiFi测量仪进行机器人定位的粒子过滤器研究(Matlab代码实现)

&#x1f4a5;&#x1f4a5;&#x1f49e;&#x1f49e;欢迎来到本博客❤️❤️&#x1f4a5;&#x1f4a5; &#x1f3c6;博主优势&#xff1a;&#x1f31e;&#x1f31e;&#x1f31e;博客内容尽量做到思维缜密&#xff0c;逻辑清晰&#xff0c;为了方便读者。 ⛳️座右铭&a…

PLSQL Developer怎样查看当前活动会话

点‘工具’-‘会话’&#xff1a; 选择‘Active sessions’: 点击某个会话&#xff0c;可以看到其对应的sql&#xff1a;

Flutter系列文章-Flutter环境搭建和Dart基础

Flutter是Google推出的一个开源的、高性能的移动应用开发框架&#xff0c;可以用一套代码库开发Android和iOS应用。Dart则是Flutter所使用的编程语言。让我们来看看如何搭建Flutter开发环境&#xff0c;并了解Dart语言的基础知识。 一、Flutter环境搭建 1. 安装Flutter SDK …

设计模式之模板模式

1. 模板模式介绍 1、模板模式即模板方法模式自定义了一个操作中的算法骨架&#xff0c;而将步骤延迟到子类中&#xff0c;使得子类可以不改变一个算法的结构&#xff0c;可以自定义该算法的某些特定步骤&#xff1b; 2、父类中提取了公共的部分代码&#xff0c;便于代码复用&am…

【ShenYu系列】ShenYu网关条件匹配的设计及原理分析

ShenYu网关中用到了很多有趣的设计&#xff0c;我对其中的条件匹配的实现尤其感兴趣&#xff0c;所以研究一下具体实现的原理。我这边用到的shenyu版本是2.6.0-SNAPSHOT。 应用入口 原理拆解 AbstractShenyuPlugin#execute&#xff0c;获取到SelectorData集合&#xff0c;进行…