【信号处理】卡尔曼(Kalman)滤波(Matlab代码实现)

2023-05-16

 👨‍🎓个人主页:研学社的博客 

💥💥💞💞欢迎来到本博客❤️❤️💥💥

🏆博主优势:🌞🌞🌞博客内容尽量做到思维缜密,逻辑清晰,为了方便读者。

⛳️座右铭:行百里者,半于九十。

📋📋📋本文目录如下:🎁🎁🎁

目录

💥1 概述

📚2 运行结果

🎉3 参考文献

🌈4 Matlab代码实现


💥1 概述

Kalman滤波算法需以系统的时间离散化状态空间为基础",测量过程的计算方程为:

📚2 运行结果

 

部分代码:

%状态转移矩阵
F = [1 T 0 0 
     0 1 0 0
     0 0 1 T
     0 0 0 1];
H = [1 0 0 0 
     0 0 1 0];
%过程噪声
B = [T^2/2, 0; T, 0;
     0, T^2/2; 0, T]; %过程噪声分布矩阵
v = sigma_u^2;   %x方向的过程噪声向量//相当于Q
V = B * v * B';
% %观测噪声??
% W = B * noise_x;

%------Data initial-------%
X_real = zeros(4,N);
X = zeros(4,N);

Z1 = zeros(2,N);
X_EKF1 = zeros(4,N);
% P1 = zeros(4,4,N);
% K1 = zeros(4,2,N);
% Hj1 = zeros(2,4,N);
Z2 = zeros(2,N);
Z_polar2 = zeros(2,N);
X_EKF2 = zeros(4,N);
% P2 = zeros(4,4,N);
% K2 = zeros(4,2,N);
% Hj2 = zeros(2,4,N);

X_CC = zeros(4,N);
X_BC = zeros(4,N);
bias = zeros(8,N,M);

%-------Track Initial-------%
X_real(:,1) = [Rx, vx, Ry, vy]'; %x: km,km/s

X_EKF1(:,1) = [Rx, 0, Ry, 0];
X_EKF2(:,1) = [Rx, 0, Ry, 0];
X_CC(:,1) = [Rx, 0, Ry, 0];
X_BC(:,1) = [Rx, 0, Ry, 0];

%Monto-carlo
for m=1:M
    
    noise_x = randn(2,N).*sigma_x; %过程噪声
    noise_z1 = randn(2,N).*sigma_z; %观测噪声
    noise_z2 = randn(2,N).*sigma_z;
    
    %构造 真实轨迹X 与 观测轨迹Z 
    for n=2:N
        if n == 30
            X_real(2,n-1) = 1;
        end
        X_real(:,n) = F * X_real(:,n-1);
    end
    X = X_real + B * noise_x;
    Z1= H * X + noise_z1 - [x1,0;0,y1]*ones(2,N);
    Z2= H * X + noise_z1 - [x2,0;0,y2]*ones(2,N);

    %这里可以写成function的形式
    P_BC = P1;
    for n=2:N
        x_predict = F * X_EKF1(:,n-1);                       %状态一步预测
        p_predict = F * P1 * F'+ V;                             %协方差一步预测
        S = H * p_predict * H'+ R1;                             %新息协方差
        K1 = p_predict * H'/ S ;                                  %增益
        X_EKF1(:,n) = x_predict + K1 * (Z1(:,n) - H * x_predict + [x1;y1]);  %状态更新方程
        P1 = (eye(4)-K1*H) * p_predict;  %协方差更新方程 %后面一半要不要?

        x_predict2 = F * X_EKF2(:,n-1);                       %状态一步预测
        p_predict2 = F * P2 * F'+ V;                             %协方差一步预测
        S2 = H * p_predict2 * H'+ R2;                             %新息协方差
        K2 = p_predict2 * H'/ S2 ;                                  %增益
        X_EKF2(:,n) = x_predict2 + K2 * (Z2(:,n) - H * x_predict2 + [x2;y2]);  %状态更新方程
        P2 = (eye(4)-K2*H) * p_predict2;  %协方差更新方程 %后面一半要不要?
        
        P_CC = inv( inv(P1) + inv(P2));
        X_CC(:,n) = P_CC * (P1\X_EKF1(:,n) + P2\X_EKF2(:,n));
        
        P_BC = (eye(4)-K2*H)* F*P_BC*F'*(eye(4)-K1*H)';
        X_BC(:,n) = X_EKF2(:,n)+(P2-P_BC)/(P1+P2-2*P_BC)*(X_EKF1(:,n)-X_EKF2(:,n));
    end

🎉3 参考文献

部分理论来源于网络,如有侵权请联系删除。

[1]代云锋.自适应卡尔曼滤波在标准贯入度动态观测数据处理中的应用[J].测绘与空间地理信息,2022,45(08):184-188+192.

[2]蒋锐,李俊,徐友云,王小明,李大鹏.基于联邦卡尔曼滤波器的容错GPS-AOA-SINS组合导航算法[J].通信学报,2022,43(08):78-89.

[3]闫辉,周国华.基于Kalman滤波的船舶磁化干扰系数测量算法[J].中国舰船研究,2022,17(04):164-169.DOI:10.19693/j.issn.1673-3185.02273.

🌈4 Matlab代码实现

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

【信号处理】卡尔曼(Kalman)滤波(Matlab代码实现) 的相关文章

  • FreeRTOS--资源管理

    函数重入 如果一个函数可以安全地被多个任务调用 xff0c 或是在任务与中断中均可调用 xff0c 则这个函数是可重入的 每个任务都单独维护自己的栈空间及其自身在的内存寄存器组中的值 如果一个函数除了访问自己栈空间上分配的数据或是内核寄存器
  • vscode代码提交到gittee码云 第一次提交方法

    学习3 xff1a 今天是第一次将vscode代码提交到gittee xff0c 废话不多说 xff0c 直接上方法 xff1a 查看git仓库 gt git status 将当前项目文件初始化为仓库 如果当前文件夹不是git仓库 xff0
  • 明火烟雾目标检测项目部署(YoloV5+Flask)

    明火烟雾目标检测项目部署 文章目录 明火烟雾目标检测项目部署1 拉取Docker PyToch镜像2 配置系统环境2 1 更换软件源2 2 下载vim2 3 解决vim中文乱码问题 3 运行项目3 1 拷贝项目到容器中3 2 安装项目所需的
  • 操作系统实践课作业(南航)

    操作系统实践课作业 xff08 南航 xff09 文章目录 操作系统实践课作业 xff08 南航 xff09 1 job21 1 main c1 2 math c1 3 Makefile 2 job32 1 myecho c2 2 myca
  • 在Linux系统下安装Neo4j图数据库

    在Linux系统下安装Neo4j图数据库 文章目录 在Linux系统下安装Neo4j图数据库1 Java JDK1 1 安装1 2 查看安装路径 2 Neo4j2 1 下载2 2 拷贝到容器中2 3 修改neo4j conf配置文件2 4
  • 大数定律 与 中心极限定理 的理解

    目录 1 大数定律 2 中心极限定理 1 大数定律 当样本的数量足够大时 xff0c 样本的统计特性就可以近似代表总体的统计特性 大数 是指样本的数量足够大或者试验的次数足够多 2 中心极限定理 设总体为 为总体的 N 个样本集 xff0c
  • 操作系统实践05—文件描述符和系统调用

    操作系统实践05 文件描述符和系统调用 文章目录 操作系统实践05 文件描述符和系统调用1 概念1 1 文件描述符1 2 系统调用1 3 例子 2 内核实现2 1 file结构体2 2 文件描述符表2 3 进程控制块2 4 私有的文件描述符
  • 医疗问答机器人项目部署

    医疗问答机器人项目部署 文章目录 医疗问答机器人项目部署1 拉取TensorFlow镜像2 配置系统环境2 1 更换软件源2 2 下载vim2 3 解决vim中文乱码问题2 4 安装Neo4J图数据库2 5 安装网络工具包 3 运行项目3
  • SimpleITK学习

    SimpleITK学习 文章目录 SimpleITK学习1 SimpleITK ReadImage path 2 SimpleITK GetArrayFromImage itk img 3 itk img GetOrigin 4 itk i
  • 【Docker】服务器部署项目

    服务器部署项目 文章目录 服务器部署项目1 远程连接服务器2 在Linux系统上安装Docker2 1 卸载旧版本2 2 使用 APT 安装2 3 安装Docker2 4 使用脚本自动安装2 5 启动Docker2 6 测试 Docker
  • 计算机网络04—网络层

    网络层 学习参考资料 xff1a 湖南科技大学 计算机网络谢希仁 计算机网络 xff08 第7版 xff09 文章目录 网络层1 概述1 1 IP协议及配套协议 2 两种服务2 1 面向连接的虚电路服务2 2 无连接的数据报服务2 3 对比
  • torch.nn学习

    torch nn学习 文章目录 torch nn学习1 卷积层1 1 Conv2d 2 池化层2 1 MaxPool2d2 2 MaxUnpool2d2 3 AvgPool2d 3 代码实践3 1 Inception Module3 2 R
  • 深度学习基础知识点【更新中】

    深度学习基础知识点 文章目录 深度学习基础知识点1 数据归一化2 数据集划分3 混淆矩阵4 模型文件5 权重矩阵初始化6 激活函数7 模型拟合8 卷积操作9 池化操作10 深度可分离卷积11 转置卷积 1 数据归一化 过大的输入数据未归一化
  • VS Code配置C/C++环境

    VS Code配置C C 43 43 环境 文章目录 VS Code配置C C 43 43 环境1 下载Visual Studio Code2 下载MinGW3 VS Code设置3 1 下载插件3 2 新建工作区3 3 C 43 43 环
  • 计算机网络05—运输层

    运输层 学习参考资料 xff1a 湖南科技大学 计算机网络谢希仁 计算机网络 xff08 第7版 xff09 文章目录 运输层1 概述1 1 两个主要协议1 2 端口 2 用户数据报协议UDP3 传输控制协议TCP3 1 概述3 2 可靠运
  • 【2022春招研发】字节笔试记录(测试方向)

    20220410字节笔试 测试方向 文章目录 20220410字节笔试 测试方向一 编程题2道 xff08 50分 xff09 二 单选题10道 xff08 20分 xff09 三 多选题10道 xff08 30分 xff09 一 编程题2
  • 浏览器主页被劫持篡改了怎么办

    就想下载个驱动 xff0c 结果一通操作把我的 Edge 浏览器主页篡改成了 桔梗网 xff0c 就下面这个网站 算了不喷它了 xff0c 来说说怎么改回去吧 其他浏览器的修改方式相同 找到 Microsoft Edge 浏览器的桌面快捷方
  • 【2022春实习】百度笔试记录(机器学习/数据挖掘/自然语言)

    20220412百度笔试 机器学习 数据挖掘 自然语言 文章目录 20220412百度笔试 机器学习 数据挖掘 自然语言一 选择题30道 xff08 60分 xff09 二 问答题1道 xff08 20分 xff09 三 系统设计题1道 x
  • 【算法工程师】华为技术面面试记录

    20220419华为技术面 面试岗位是算法工程师 文章目录 20220419华为技术面1 自我介绍 2 算法题3 专业知识3 1 数据结构3 2 计算机网络3 3 操作系统3 4 设计模式3 5 机器学习3 6 其他 4 提问环节 1 自我
  • 操作系统实践06—线程

    操作系统实践06 线程 文章目录 操作系统实践06 线程1 创建线程1 1 原型1 2 线程参数1 3 参数类型1 4 例子一1 5 例子二 2 等待线程2 1 原型2 2 线程返回值2 3 例子一2 4 例子二 3 线程互斥3 1 初始化

随机推荐

  • VS Code指定扩展安装位置

    VS Code指定扩展安装位置 默认情况下 xff0c Windows vscode的安装路径为C Users 用户名 vscode extensions 如果想要自定义扩展的安装路径 xff0c 无法直接在vscode中修改 但是 xff
  • Ubuntu 网络配置顺序:(Ubuntu 16.4)

    网络配置顺序 xff1a xff08 Ubuntu 16 4 xff09 1 xff0c 网卡硬件 xff08 硬件 vm DHCP用NAT直接到物理网 xff0c 静态用桥接通过本地网络链接转发 xff09 xff0c 2 xff0c 系
  • C语言实现汉诺塔问题

    目录 一 程序 1 实现代码 2 程序执行结果 二 背景 1 汉诺塔问题描述 2 直观理解 3 思考过程 三 函数执行过程 举例 n 61 2 四 总结 递归问题 一 程序 1 实现代码 include lt stdio h gt 函数名
  • ubuntu 系统下运行DQN Flappy bird

    github链接 xff1a xff08 两个项目均可运行成功 xff0c 推荐第二个 xff0c 只有200多行 xff0c 好入门 xff09 https github com songrotek DRL FlappyBird http
  • eclipse中如何查看程序源码

    在eclipse中如何查看程序源码 1 查看方法 xff0c 按下Ctrl键同时 xff0c 用鼠标指向自己想要查看源码的关键字 xff0c 该字会出现下划线 xff0c 单击左键 xff0c 就可以进入源码查看了 2 在此前 xff0c
  • 基于51单片机的智能窗帘proteus仿真数码管显示

    硬件设计 该硬件设计是基于51单片机为MCU xff0c ADC采用ADC0804 xff0c 电机驱动芯片是L298 xff0c 显示部分采用的是4位数码管 ADC0804芯片的简介 xff1a 工作电压 xff1a 43 5V xff0
  • Mac VSCode 配置Gitee |使用Sourcetree关联Gitee仓库

    目录 一 使用Git的基本操作 xff08 如果只是想看如何上传到gitee的直接跳过这个 xff09 xff1a 1 安装插件GitLens 2 初始化 3 git文件 4 创建一个示例文件 5 操作日志 6 操作日志查看 7 版本回退
  • 马尔可夫链 以及 隐马尔可夫模型(HMM)

    背景 xff1a 马尔可夫过程 xff08 Markov process xff09 是一类随机过程 它的原始模型马尔科夫链 xff0c 由俄国数学家A A Markov于1907年提出 马尔可夫过程是研究离散时间动态系统状态空间的重要方法
  • AIOps探索:基于VAE模型的周期性KPI异常检测方法——VAE异常检测

    AIOps探索 xff1a 基于VAE模型的周期性KPI异常检测方法 VAE异常检测 参考文章 xff1a xff08 1 xff09 AIOps探索 xff1a 基于VAE模型的周期性KPI异常检测方法 VAE异常检测 xff08 2 x
  • 51单片机系列--蜂鸣器

    工作原理 蜂鸣器发声原理是电流通过电磁线圈 xff0c 使电磁线圈产生磁场来驱动振动膜发声的 xff0c 因此需要一定的电流才能驱动它 51单片机IO口输出的TTl电流无法驱动蜂鸣器 xff0c 故而蜂鸣器内部需要一个三极管来进行电流放大
  • debian9.8安装网卡驱动

    一 挂载本地镜像源 xff08 参考下面博客 xff09 debian9 8添加iso为本地源 weixin 46027366的博客 CSDN博客 二 配置安装所需环境 1 xff09 安装gcc和cmake xff0c 命令行输入如下命令
  • 浮点型数据的输入和输出(C语言)

    目录 1 浮点型数据的输入 1 1 单精度输入 1 2 双精度和长双精度 2 浮点型数据的输出 2 1 浮点数的默认输出 2 2 指定输出格式 m n f 2 3 输出示例 3 案例 3 1 案例 1 浮点型数据的输入 1 1 单精度输入
  • 开学送给她的礼物(Python实现)

    目录 1 卿为朝朝暮暮 2 情感起伏 3 礼物赠送 4 Python之实现turtle 1 卿为朝朝暮暮 先手抄一遍 xff0c 然后再键盘敲出来 xff1a 飞鸟集中的一句话 xff0c 改编的一首诗是过样的 浮世万千 xff0c 吾爱有
  • 最详细matlab 2018a安装教程步骤.

    链接 xff1a https pan baidu com s 1XjfAKeFY otNy7HfGhYQCw 提取码 xff1a cmzv 来自百度网盘超级会员V3的分享 1 鼠标右击 Matlab R2018a Win64 压缩包 xff
  • 牵着她——表白不成功算我输(Python实现)

    目录 1 牵着她的手一直走下去 2 一首小情诗送给甜甜的她 3 历史总结的哲学想法 4 表白不成功算我输 xff08 Python代码 xff09 1 牵着她的手一直走下去 今天牵着她的手 xff0c 她很贴心 一起并肩赏樱花 x1f338
  • Python|十五个超级炫酷代码

    x1f96c x1f96c x1f96c 欢迎来到本博客 x1f60a x1f60a x1f60a 本次博客内容将分享几个超级炫酷的Python代码和前端 x1f4dd 目前更新 xff1a x1f31f x1f31f x1f31f 炫酷炫
  • 【无人机】四轴无人机的轨迹进行可视化和动画处理(Matlab代码实现)

    x1f4cb x1f4cb x1f4cb 本文目录如下 xff1a 目录 1 概述 2 运行结果 3 参考文献 4 Matlab代码实现 1 概述 随着传感器检测技术 智能控制技术和材料技术的快速发展 四轴无人机及其配套系统的发展越来越成熟
  • 【无人机】四旋翼飞行器控制、路径规划和轨迹优化(Matlab代码实现)

    x1f4a5 x1f4a5 x1f4a5 x1f49e x1f49e x1f49e 欢迎来到本博客 x1f4a5 x1f4a5 x1f4a5 x1f3c6 博主优势 xff1a x1f31e x1f31e x1f31e 博客内容尽量做到思维
  • Viterbi算法(维特比算法)

    维特比算法背景 xff1a 安德鲁 维特比 xff08 Andrew J Viterbi xff09 xff0c CDMA之父 xff0c IEEE Fellow xff0c 高通公司创始人之一 xff0c 高通首席科学家 他开发了卷积码编
  • 【信号处理】卡尔曼(Kalman)滤波(Matlab代码实现)

    x1f468 x1f393 个人主页 xff1a 研学社的博客 x1f4a5 x1f4a5 x1f49e x1f49e 欢迎来到本博客 x1f4a5 x1f4a5 x1f3c6 博主优势 xff1a x1f31e x1f31e x1f31e