当前位置: 首页 > article >正文

MATLAB程序介绍,三维环境下的IMM(交互式多模型),使用CV和CT模型,EKF作为滤波

在这里插入图片描述

本文所述的MATLAB代码为三维的交互式多模型(IMM)滤波器,结合了匀速直线运动(CV模型)和匀速圆周运动(CT模型)的状态估计。使用扩展卡尔曼滤波(EKF)来处理状态更新与观测数据,旨在提高对动态系统状态的估计精度。

文章目录

  • 程序结构
  • 运行结果
  • 部分代码
  • 代码详解
    • 主要功能
    • 代码结构
  • 完整代码

程序结构

在这里插入图片描述

运行结果

三维轨迹图:
在这里插入图片描述
三维位移曲线:

在这里插入图片描述

三轴位移误差曲线:

在这里插入图片描述
概率变化曲线:
在这里插入图片描述

部分代码

% 三维IMM,CV和CT模型,EKF
% 2025-03-01/Ver1
%% 建模
clear; %清空工作区
clc; %清空命令行
close all; %关闭所有窗口(主窗口除外)
rng(0); %固定随机种子,让每次运行得到的结果相同
N = 600; %定义仿真时间为600
T = 1; %定义采样间隔为1
x0 = [1000,10,1000,10,30,1]'; %状态初始化,四项为别为x轴位置、速度、y轴位置、速度
xA = []; %预定义输出的状态
% CV匀速运动
fCV = @(x, y) [x(1) + T*x(2);x(2);x(3) + T*x(4);x(4);x(5) + T*x(6);x(6)]; % CV的状态方程
A1 = [1,T,0,0,0,0;0,1,0,0,0,0;0,0,1,T,0,0;0,0,0,1,0,0;0,0,0,0,1,T;0,0,0,0,0,1]; %定义匀速运动时的状态转移矩阵
G1=[T^2/2,0,0;T,0,0;0,T^2/2,0;0,T,0;0,0,T^2;0,0,T] ; %设置匀速运动时的输入向量转移矩阵
Q1=0.01*diag([1,1,1]); %设置状态转移协方差矩阵
% CT匀速圆周运动
w = -pi/360;
% f1=1;
% f2=sin(w*t)/w;
% f3=(1-cos(w*t))/w;
% f4=cos(w*t);
% f5=sin(w*t);
% F=[ f1 f2 0 -f3 ;
%     0  f4 0 -f5 ;
%     0 f3 f1  f2 ;
%     0 f5 0 f4;];
fCT = @(x, y) [x(1) + sin(w*T)/w*x(2) - (1-cos(w*T))/w*x(4);cos(w*T)*x(2) - sin(w*T)*x(4);(1-cos(w*T))/w*x(2) + x(3) + sin(w*T)/w*x(4);sin(w*T)*x(2) + cos(w*T)*x(4);x(5)+T*x(6);x(6)]; % CV的状态方程
A2=CreatCTF(-pi/360,T); %设置匀速圆周运动时的状态转移矩阵
G2=CreatCTT(T); %设置匀速圆周运动时的输入向量转移矩阵
Q2=0.0144^2*diag([1,1,1]); %设置匀速圆周运动时的

运行结束后,命令行窗口的输出如下:

在这里插入图片描述

代码详解

主要功能

  1. 状态建模

    • 初始化状态,包括位置和速度。
    • 定义CV和CT模型的状态转移方程及协方差矩阵。
  2. 真实数据生成

    • 模拟匀速运动和圆周运动的真实状态数据,通过加入噪声生成测量数据。
  3. IMM滤波

    • 使用IMM框架融合CV与CT模型的估计,更新状态和协方差,计算模型的转移概率。
  4. 卡尔曼滤波

    • 对每个模型(CV和CT)进行卡尔曼滤波,以获得状态估计。
    • 通过预测与更新步骤,计算滤波增益和协方差。
  5. 误差分析

    • 计算不同模型下的估计误差,包括RMSE(均方根误差)和模型概率的变化。
  6. 结果可视化

    • 绘制真实值、测量值及不同模型的滤波结果,以便直观比较滤波性能。

代码结构

  • 参数设置:包括仿真时间、采样间隔、状态初始值等。
  • 状态转移矩阵生成:定义两个运动模型的状态转移矩阵。
  • 数据生成循环:迭代产生真实状态数据,并加入观测噪声。
  • 卡尔曼滤波实现:分别对CV和CT模型进行滤波。
  • 结果绘图:展示估计结果与真实值的对比,以及不同模型的误差分析。

结构图如下:

在这里插入图片描述

完整代码

如需帮助,或有导航、定位滤波相关的代码定制需求,请点击下方卡片联系作者

相关文章:

MATLAB程序介绍,三维环境下的IMM(交互式多模型),使用CV和CT模型,EKF作为滤波

本文所述的MATLAB代码为三维的交互式多模型(IMM)滤波器,结合了匀速直线运动(CV模型)和匀速圆周运动(CT模型)的状态估计。使用扩展卡尔曼滤波(EKF)来处理状态更新与观测数…...

[Windows] 多系统键鼠共享工具 轻松跨系统控制多台电脑

参考原文:[Windows] 多系统键鼠共享工具 轻松跨系统控制多台电脑 还在为多台电脑需要多套键盘鼠标而烦恼吗?是不是在操控 Windows、macOS、Linux 不同系统电脑时手忙脚乱?现在,这些问题通通能解决!Deskflow 软件闪亮登…...

【leetcode hot 100 48】旋转图像

方法一:(原地旋转)对于矩阵中第 i 行的第 j 个元素,在旋转后,它出现在倒数第 i 列的第 j 个位置。matrix[row][col]在旋转后的新位置为matrix[col][n−row−1]。只要旋转四次就能回到原点。 class Solution {public vo…...

K8S高可用集群-小白学习之二进制部署(ansible+shell)

一.K8S高可用集群配置概述 序言:本文从一个小白的视角进行K8S的研究和部署,采用二进制的方式是为了更清楚了分解部署流程及了解这个集群是怎么运作的,加上ansible+shell是方便在这个过程中,遇到了问题,我们可以不断的快速重复部署来测试和研究问题的所在点,本文的架构图…...

【哇! C++】类和对象(三) - 构造函数和析构函数

目录 一、构造函数 1.1 构造函数的引入 1.2 构造函数的定义和语法 1.2.1 无参构造函数: 1.2.2 带参构造函数 1.3 构造函数的特性 1.4 默认构造函数 二、析构函数 2.1 析构函数的概念 2.2 特性 如果一个类中什么成员都没有,简称为空类。 空类中…...

利用Ollama+AnythingLLM+本地向量数据库Milvus+本地DeepSeek大模型实现知识库的搭建

1. Ollama的搭建 基本介绍 Ollama是一个支持在Windows、Linux和MacOS上本地运行大语言模型的工具。它允许用户非常方便地运行和使用各种大语言模型,比如Qwen模型等。用户只需一行命令就可以启动模型。 Ollama 下载:https://ollama.com/download Ollama 官方主页&a…...

攻防世界WEB(新手模式)19-file_include

先进行代码分析 include("./check.php");:包含并执行当前目录下的check.php文件,通常用于引入一些通用的函数、类或配置信息。if(isset($_GET[filename])):检查是否通过 GET 请求传递了名为filename的参数。如果传递了filename参数…...

Facebook 的隐私保护数据存储方案研究

Facebook 的隐私保护数据存储方案研究 在这个信息爆炸的时代,数据隐私保护已成为公众关注的热点。Facebook,作为全球最大的社交媒体平台之一,承载着海量用户数据,其隐私保护措施和数据存储方案对于维护用户隐私至关重要。本文将深…...

app UI自动化测试框架都包含哪些内容?

UI自动化测试框架是指用于自动化执行用户界面(UI)相关测试的工具和库。它们可以帮助开发团队提高测试效率、发现和解决应用程序中的问题,并确保应用程序的正确性和稳定性。下面将详细介绍一个完整的UI自动化测试框架应该具备的内容。 1. 测试环境配置 UI自动化测试框…...

C++ 中 `shared_ptr` 的用法及常见陷阱解析

shared_ptr 是 C 标准库&#xff08;<memory> 头文件&#xff09;中提供的一种智能指针&#xff0c;用于管理动态分配的内存。它通过引用计数&#xff08;reference counting&#xff09;来实现多个 shared_ptr 对象共享同一块内存的所有权。当最后一个 shared_ptr 被销毁…...

Android+SpringBoot的老年人健康饮食小程序平台

感兴趣的可以先收藏起来&#xff0c;还有大家在毕设选题&#xff0c;项目以及论文编写等相关问题都可以给我留言咨询&#xff0c;我会一一回复&#xff0c;希望帮助更多的人。 系统介绍 我将从经济、生活节奏、技术融合等方面入手&#xff0c;详细阐述居家养老管理模式兴起的…...

ORB-SLAM2源码学习(六):相机跟踪(局部地图跟踪和关键帧创建)

目录 1.局部地图跟踪 1.1 更新局部关键帧UpdateLocalKeyFrames 1.2 更新局部地图点&#xff08;来自局部关键帧&#xff09;UpdateLocalPoints() 1.3 投影匹配 2. 对比四种跟踪方式以及使用的投影匹配 3.关键帧创建 3.1 判断是否需要创建新关键帧: NeedNewKeyFrame() 3…...

视频格式有哪些视频格式汇总

视频格式是指视频文件的编码和封装方式&#xff0c;不同的格式适用于不同的应用场景。以下是一些常见的视频格式及其特点&#xff1a; 1. MP4&#xff08;MPEG-4 Part 14&#xff09; 特点&#xff1a;最流行的视频格式之一&#xff0c;支持多种视频编码标准&#xff08;如H.…...

【极客时间】浏览器工作原理与实践-2 宏观视角下的浏览器 (6讲) - 2.6 渲染流程(下):HTML、CSS和JavaScript,是如何变成页面的?

https://time.geekbang.org/column/article/118826 2.6 渲染流程&#xff08;下&#xff09;&#xff1a;HTML、CSS和JavaScript&#xff0c;是如何变成页面的&#xff1f; 2.5介绍了渲染流水线中的 DOM 生成、样式计算和布局三个阶段&#xff0c;2.6讲解渲染流水线后面的阶段…...

浏览器WEB播放RTSP

注意&#xff1a;浏览器不能直接播放RTSP&#xff0c;必须转换后才能播放。这一点所有的播放都是如此。 参考 https://github.com/kyriesent/node-rtsp-stream GitHub - phoboslab/jsmpeg: MPEG1 Video Decoder in JavaScript 相关文件方便下载 https://download.csdn.net…...

DeepSeek开源Day4:DualPipeEPLB技术详解

2 月 24 日&#xff0c;DeepSeek 启动 “开源周”&#xff0c;第四个开源的代码库为 DualPipe 与 EPLB&#xff08;一下发布了两个&#xff09;。DualPipe 与 EPLB 依然使用了大量与 Hopper 架构绑定的技术。 DualPipe 是由 DeepSeek-AI 团队开发的一种双向流水线并行通信算法&…...

阿里推出全新推理模型(因果语言模型),仅1/20参数媲美DeepSeek R1

阿里Qwen 团队正式发布了他们最新的研究成果——QwQ-32B大语言模型&#xff01;这款模型不仅名字萌萌哒(QwQ)&#xff0c;实力更是不容小觑&#xff01;&#x1f60e; QwQ-32B 已在 Hugging Face 和 ModelScope 开源&#xff0c;采用了 Apache 2.0 开源协议。大家可通过 Qwen C…...

vue实现一个pdf在线预览,pdf选择文本并提取复制文字触发弹窗效果

[TOC] 一、文件预览 1、安装依赖包 这里安装了disjs-dist2.16版本&#xff0c;安装过程中报错缺少worker-loader npm i pdfjs-dist2.16.105 worker-loader3.0.8 2、模板部分 <template><div id"pdf-view"><canvas v-for"page in pdfPages&qu…...

Unity自定义渲染管线(Scriptable Render Pipeline)架构设计与实现指南

一、SRP技术体系概述 1. 核心设计理念 全托管渲染控制&#xff1a;通过C#脚本完全掌控渲染流程 模块化架构&#xff1a;将渲染流程拆分为可组合的RenderPass GPU友好设计&#xff1a;支持CommandBuffer与Compute Shader混合编程 对惹&#xff0c;这里有一个游戏开发交流小组…...

时间复杂度分析与递归,以新南UNSW的COMP2521作业题为例

作者&#xff1a;Smooth&#xff08;连接教育高级讲师&#xff09; 首发于&#xff1a;⁠⁠⁠⁠⁠⁠⁠UNSW学习知识库&#xff08;UNSW Study Wiki&#xff09; 创作时间&#xff1a;2025年3月5日 如何测度算法的时间性能&#xff1f;理论分析Theoretical Analysis 测度算法时…...

RxJS与Redux革命性协同:打造高效、解耦的前端状态管理方案

摘要 本文探讨RxJS与Redux的融合应用&#xff0c;通过真实用户场景揭示其必要性&#xff0c;系统讲解整合策略&#xff0c;从基础到高级涵盖响应式编程优化、异步操作处理、状态流控制等核心主题。提供可落地的架构方案与性能优化技巧&#xff0c;包含10可复用代码示例和20实战…...

蓝桥杯P1259-奇怪的馈赠 (贪心题解)

题目&#xff1a;奇怪的捐赠 题目来源&#xff1a;1.奇怪的捐赠 - 蓝桥云课 题目描述 需要将 100 万&#xff08;1,000,000&#xff09;正好分成若干个 7 的次方形式的数&#xff08;如 7^01, 7^17, 7^249 等&#xff09;&#xff0c;且每种金额&#xff08;即每个 7 的次方…...

todo: 使用融云imserve做登录(android)

使用融云做登录注册思路 注册界面需要name, email, password考虑到融云注册用户的post格式 POST http://api.rong-api.com/user/getToken.json?userId1690544550qqcom&nameIronman这里的userId可以使用用户的email&#xff0c;但是要截断和 . 符号&#xff0c;即1690544…...

如何设置爬虫的User-Agent?

在爬虫开发中&#xff0c;设置合适的 User-Agent 是非常重要的一步。User-Agent 是 HTTP 请求头中的一个字段&#xff0c;用于标识客户端&#xff08;通常是浏览器&#xff09;的类型、版本、操作系统等信息。通过设置 User-Agent&#xff0c;可以模拟正常的浏览器访问行为&…...

C++ 二叉搜索树代码

C 二叉搜索树代码 #include <iostream> using namespace std;template<typename T> struct TreeNode{T val;TreeNode *left;TreeNode *right;TreeNode():val(0), left(NULL), right(NULL){}TreeNode(T x):val(x), left(NULL), right(NULL){} };template<typena…...

OpenAI Whisper:开启语音转文本的智能时代

在人工智能技术飞速发展的今天,OpenAI推出的Whisper语音识别系统正悄然改变着人类与机器的交互方式。作为一款开源的AI驱动语音转文本工具,Whisper凭借其跨语言能力、高精度识别和灵活的生态系统,成为开发者和普通用户共同追捧的技术标杆。 核心技术与突破 Whisper基于深度…...

基于CSDN资源,搭建AI赋能农业典型场景落地方案

农业场景&#xff0c;不但是信息化、自动化等薄弱的产业&#xff0c;更是AI落地困难的场景。基于此&#xff0c;想通过这篇文章查找一个CSDN相关资源&#xff0c;论证一下AI赋能农业三个典型场景的实现思路。 场景1&#xff1a;水质-土壤智能调控 **痛点&#xff1a;**水质恶…...

python量化交易——金融数据管理最佳实践——使用qteasy大批量自动拉取金融数据

文章目录 使用数据获取渠道自动填充数据QTEASY数据拉取功能数据拉取接口refill_data_source()数据拉取API的功能特性多渠道拉取数据实现下载流量控制实现错误重试日志记录其他功能 qteasy是一个功能全面且易用的量化交易策略框架&#xff0c; Github地址在这里。使用它&#x…...

RoboBrain:从抽象到具体的机器人操作统一大脑模型

25年2月来自北大、北京智源、中科院自动化所等的论文“RoboBrain: A Unified Brain Model for Robotic Manipulation from Abstract to Concrete”。 目前的多模态大语言模型&#xff08;MLLM&#xff09; 缺少三项必备的机器人大脑能力&#xff1a;规划能力&#xff0c;将复杂…...

DeepSeek本地接口调用(Ollama)

前言 上篇博文&#xff0c;我们通过Ollama搭建了本地的DeepSeek模型&#xff0c;本文主要是方便开发人员&#xff0c;如何通过代码或工具&#xff0c;通过API接口调用本地deepSeek模型 前文&#xff1a;DeepSeek-R1本地搭建_deepseek 本地部署-CSDN博客 注&#xff1a;本文不仅…...