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

DR-CAN 卡尔曼滤波笔记

Kalman Filter(卡尔曼滤波)

Optimal(最优化) Recursive(递归) Data Processing(数据处理) Algorithm(算法)

1 递归算法_Recursive Alorithm

1.1 公式推演

1.2 案例

1.3编程实现

% 设置迭代次数
n = 5000000;

% 生成测量值序列
% rand(n + 1, 1) 生成一个长度为 n+1 的列向量,元素取值范围是 [0, 1]
% 这里将其线性变换到 [47, 53] 区间,模拟测量值
Z = 47 + 6 * rand(n + 1, 1);

% 测量误差的固定值,代表测量过程中存在的误差
e_mea = 3;

% 初始化估计误差向量,用于存储每次迭代的估计误差
% 初始化为全零向量,长度为 n
e_est = zeros(n, 1);
% 设置估计误差的初始值
e_est(1) = 5;

% 初始化状态估计向量,用于存储每次迭代对状态的估计值
% 初始化为全零向量,长度为 n
X_hat = zeros(n, 1);
% 设置状态估计的初始值
X_hat(1) = 49;

% 卡尔曼滤波迭代过程,从第 2 次迭代开始,到第 n+1 次迭代结束
for k = 2:n + 1
    % 计算卡尔曼增益 K_k
    % 卡尔曼增益用于权衡上一次的估计值和当前测量值在更新状态估计时的权重
    K_k = e_est(k - 1) / (e_est(k - 1) + e_mea);
    
    % 根据卡尔曼增益更新状态估计值
    % 将上一次的估计值与测量值和上一次估计值的差值进行加权求和
    X_hat(k) = X_hat(k - 1) + K_k * (Z(k) - X_hat(k - 1));
    
    % 更新估计误差
    % 根据卡尔曼增益对上次的估计误差进行调整
    e_est(k) = (1 - K_k) * e_est(k - 1);
end

% 计算状态估计值与真实值(这里假设真实值为 50)之间的误差
E = 50 * ones(length(X_hat), 1) - X_hat;

% 创建第一个图形窗口
figure(1);
% 绘制状态估计值随迭代次数的变化曲线
% 横坐标为迭代次数,纵坐标为状态估计值
plot((1:length(X_hat)), X_hat);
% 在图形中显示网格线,方便观察数据
grid on;

% 创建第二个图形窗口
figure(2);
% 绘制估计误差随迭代次数的变化曲线
% 横坐标为迭代次数,纵坐标为估计误差
plot((1:length(X_hat)), E);
% 在图形中显示网格线,方便观察数据
grid on;

 【卡尔曼滤波器】1_递归算法_Recursive Processing_哔哩哔哩_bilibili

2 数学基础_数据融合_协方差矩阵_状态空间方程

数据融合(Data Fusion)

协方差矩阵(Covariance matrix)

方差和协方差在一个矩阵中表现-->变量之间的联动关系

状态空间方程 

 X(k):状态变量;A:状态矩阵;B:控制矩阵U(k-1)控制


http://www.kler.cn/a/590675.html

相关文章:

  • leetcode每日一题:使字符串平衡的最小交换次数
  • 【软件工程】06_软件设计
  • Carto 无尽旅图 for Mac v1.0.7.6 (51528)冒险解谜游戏 支持M、Intel芯片
  • 微软 AI 发布 LongRoPE2:近乎无损地将大型语言模型上下文窗口扩展至 128K 标记,保持 97% 短上下文准确性
  • 14.使用各种读写包操作 Excel 文件:辅助模块
  • APB-清华联合腾讯等机构推出的分布式长上下文推理框架
  • 拦截网页中的 Fetch 和 XMLHttpRequest 请求方式方法
  • 谈谈你对前端工程化的理解,它包含哪些方面
  • 算法基础篇(蓝桥杯常考点)
  • 阿里云、腾讯云云主机如何提升远程桌面安全(VNC登录)
  • Oracle SQL*Loader 与 SQLULDR2 学习指南
  • UART转AHB模块ModelSim仿真
  • Qt 通过MSVC编译运行项目
  • 数据库:一文掌握 PostgreSQL 的各种指令(PostgreSQL指令备忘)
  • Linux环境使用jmeter做性能测试
  • Elastic Stack 8.16.0 日志收集平台的搭建
  • 智能合约:Solidity(基于以太坊或兼容链,如 Polygon、BSC)(仅供学习区块链知识,不可进行违法开发应用)
  • 使用 NetworkX 进行图论分析与可视化
  • 仿RabbitMQ的消息队列
  • hadoop集群配置-整体介绍