卡尔曼滤波算法的matlab实现

卡尔曼滤波算法的matlab实现

matlab 复制代码
figure;
hold on;

Z=(1:1:100);  %观测值:第一秒观测1m 第二秒观测两米  匀速运动, 每秒1m,  最后拟合的也是速度 1m/s

plot(Z);
plot([0,100], [1,1]);

noise=randn(1,100)*0.5;  %生成方差为1的高斯噪声
Z=Z+noise;  % 加入噪声

plot(Z);

X=[0;0];  %初始状态 随意设置; 经过几次迭代后,接近真实的状态
P=[1 0;0 1];  %状态协方差矩阵 :随意设置;   经过几次迭代后,接近真实的状态
F=[1 1;0 1];  %状态转移矩阵, \Delta{t} 为 1, 每 秒采样一次
Q=[0.0001, 0;0 0.0001];  % 状态转移协方差矩阵:因为相信状态转移矩阵不会出错, 因此 Q方差 很小
H=[1 0];  % 观测矩阵
R=cov(noise);  % 观测矩阵协方差, 与加入的方差为1的高斯噪声相对应;

for i=1:100
    X_=F*X;  % 预测状态公式, 代码中缺乏控制量
    P_=F*P*F'+Q;
    K=P_*H'/(H*P_*H'+R);
    X=X_+K*(Z(i)-H*X_);
    P=(eye(2)-K*H)*P_;  % eye(2)是二阶单位阵
    
    % plot(X(1),X(2),'x');
    scatter(Z(i), X(1),'.');  % 画点, 横轴表示位置, 纵轴表示速度
    scatter(Z(i), X(2),'.');  % 画点, 横轴表示位置, 纵轴表示速度
    
end

%plot(Z, Z)

实验结果图:

相关推荐
WBluuue17 分钟前
数据结构与算法:分块(一):块状数组、块状链表
数据结构·c++·算法·链表
脏脏a1 小时前
延迟与画质:远程控制的生命线
开发语言·php
澳鹏Appen2 小时前
澳鹏重磅发布ExamOCRBench:面向端到端试卷判分的多任务基准
算法·benchmark·基准评测
像风一样的男人@2 小时前
python --基于scp的文件传输助手
开发语言·python
一条破秋裤2 小时前
SDIO Wi‑Fi 设备的驱动向insmod + 反向rmmod
开发语言·php
benjormin2 小时前
Java数据结构 二叉搜索树
数据结构·算法
m0_639906942 小时前
Java 重写 Override 与重载 Overload 区别、访问修饰符、static 关键字
java·开发语言
Evand J2 小时前
【MATLAB例程】平面下,5基站对待定位点的定位。基于距离辅助下的AOA。完整代码下载链接
开发语言·matlab·平面·定位·导航·测距·aoa
人工智能培训2 小时前
知识图谱:结构化表达实体与关系的知识组织技术
大数据·人工智能·算法·重构·生活·知识图谱
GIS数据转换器2 小时前
基于CIM的城市智慧供热监管服务平台
java·大数据·开发语言·人工智能·后端·物联网·struts