Matlab之Kalman:用线性系统状态方程,通过系统输入输出观测数据,对系统状态进行最优估计的算法

目录

问题探究

卡尔曼滤波及数据滤波

代码实现


问题探究

用线性系统状态方程,通过系统输入输出观测数据,对系统状态进行最优估计的算法。

卡尔曼滤波及数据滤波

卡尔曼滤波(Kalman filtering)一种利用线性系统状态方程,通过系统输入输出观测数据,对系统状态进行最优估计的算法。由于观测数据中包括系统中的噪声和干扰的影响,所以最优估计也可看作是滤波过程。
       斯坦利·施密特(Stanley Schmidt)首次实现了卡尔曼滤波器。卡尔曼在NASA埃姆斯研究中心访问时,发现他的方法对于解决阿波罗计划的轨道预测很有用,后来阿波罗飞船的导航电脑使用了这种滤波器。 关于这种滤波器的论文由Swerling (1958), Kalman (1960)与 Kalman and Bucy (1961)发表。
       数据滤波是去除噪声还原真实数据的一种数据处理技术, Kalman滤波在测量方差已知的情况下能够从一系列存在测量噪声的数据中,估计动态系统的状态. 由于, 它便于计算机编程实现, 并能够对现场采集的数据进行实时的更新和处理, Kalman滤波是目前应用最为广泛的滤波方法, 在通信, 导航, 制导与控制等多领域得到了较好的应用

代码实现

clear all;
clc;
close all;N=2000;
gv=0.0332;
m=500;
a=[-1.6 1.46 -0.616 0.1525];
Q2=0.005;%观测噪声方差
w=zeros(m*4,N);
alpher=zeros(m,N);for j=1:mv=randn(1,N)*sqrt(gv);u=filter(1,a,v);F=eye(4,4);
d=u;
C=zeros(4,N);
for i=5:NC(:,i)=[u(i-1);u(i-2);u(i-3);u(i-4)];
end
C(:,1)=[0;0;0;0];
C(:,2)=[d(1);0;0;0];
C(:,3)=[d(2);d(2);0;0];
C(:,4)=[d(3);d(2);d(1);0];p_esti=eye(4,4);%状态误差自相关矩阵for i=2:Nw([4*j-3,4*j-2,4*j-1,4*j],i)=w([4*j-3,4*j-2,4*j-1,4*j],i-1);%一步预测误差alpher(j,i)=d(i)-C(:,i)'*w([4*j-3,4*j-2,4*j-1,4*j],i).'';%计算信息过程p_pre=p_esti;%一步预测误差自相关矩阵A=C(:,i)'*p_pre*C(:,i)+Q2;%新息过程自相关矩阵k=p_pre*C(:,i)/A;w([4*j-3,4*j-2,4*j-1,4*j],i)=w([4*j-3,4*j-2,4*j-1,4*j],i)+k*alpher(j,i);%状态估计p_esti=p_pre-k*C(:,i)'*p_pre;%状态估计误差自相关矩阵
endendMSE=sum(alpher.^2)/m;
MSE=MSE/max(MSE);
MSE=10*log10(MSE);
figure(1)
plot(MSE);
title(' 均方误差变化曲线');
xlabel('迭代次数n');ylabel('MSE');w_aver=zeros(4,N);
for i=1:mw_aver(1,:)=w_aver(1,:)+w(4*i-3,:);w_aver(2,:)=w_aver(2,:)+w(4*i-2,:);w_aver(3,:)=w_aver(3,:)+w(4*i-1,:);w_aver(4,:)=w_aver(4,:)+w(4*i,:);
endw_aver=w_aver/m;
figure(2)
hold on;
plot(w_aver(1,:),'b');
plot(w_aver(2,:),'b');
plot(w_aver(3,:),'b');
plot(w_aver(4,:),'b');
title('权向量的估计');
xlabel('迭代次数n');ylabel('抽头权值');
hold off;

Matlab之Kalman:用线性系统状态方程,通过系统输入输出观测数据,对系统状态进行最优估计的算法相关推荐

  1. matlab判断系统因果性,如何分析判断系统是否为稳定系统、因果系统、线性系统?...

    如何判断一个系统是否为线性系统,时不变系统以及稳定系统? 先线性运算再经过系统=先经过系统再线性运算是线性系统: 先时移再经过系统=先经过系统再时移为时不变系统: 时间趋于无穷大时系统值有界则为稳定的 ...

  2. matlab求系统根轨迹和系统增益,控制系统的根轨迹分析

    一.根轨迹分析方法的概念 所谓根轨迹是指,当开环系统某一参数从零变到无穷大时,闭环系统特征方程的根在s平面上的轨迹.一般来说,这一参数选作开环系统的增益K,而在无零极点对消时,闭环系统特征方程的根就是 ...

  3. 使用matlab将UKF应用于六维匀加速直线运动目标跟踪系统

    将UKF应用于六维匀加速直线运动目标跟踪系统 % UKF在六维匀加速直线运动目标跟踪系统中的应用 % ukf_for_track_6_div_system %% 初始化参数设定 % 状态位数 n = ...

  4. matlab/simulink 转速功角发电机相轨迹分析,转速功角曲线,电力系统暂态稳定分析,四机两区系统,ieee39节点系统

    matlab/simulink 转速功角发电机相轨迹分析,转速功角曲线,电力系统暂态稳定分析,四机两区系统,ieee39节点系统. 判断系统是否失去稳定的相轨迹. 实时将机组进行分群处理. 复现的文献 ...

  5. matlab为什么要升维数,基于MATLAB和升维投影法的手写字符识别输入系统

    256 现代交际·2019年6期 作者简介:王思达,长春师范大学学生,研究方向:计算机科学与技术:刘勇,长春师范大学学生,研究方向:计算机科学与技术:袁汇灵, 长春师范大学学生,研究方向:计算机科学与 ...

  6. 基于matlab的离散系统变换域分析实验,数字信号处理实验 离散时间系统的变换域分析.docx...

    实验二 离散时间系统的变换域分析一 实验目的:线性时不变(LTI)离散时间系统的特性完全可以用其冲击响应序列h[n]来表示.则前面给出的离散时间信号的变换分析手段也可以用于离散时间系统的分析中.在LT ...

  7. 基于matlab的手写输入板,基于MATLAB和升维投影法的手写字符识别输入系统

    王思达 刘勇 袁汇灵 摘要:互动式电子白板最早由加拿大SMART Technologies Inc在1331年发明.其最早的用途是会议与培训,并在随后进军到了教育领域.在国内,随着教育正逐渐向数字化. ...

  8. 【数字信号处理】线性时不变系统 LTI ( 判断某个系统是否是 “ 线性 “ 系统 | 案例四 )

    文章目录 一.判断某个系统是否是 " 线性 " 系统 一.判断某个系统是否是 " 线性 " 系统 系统 TTT 是 " 时不变系统 " , ...

  9. 数字滤波器(二)--最小相位延时系统和全通系统

    最小相位延时系统和全通系统 引 1. 系统相位 2. 最小相位延时系统 2.1 最小相位延时系统 2.2 最小相位延时系统的性质 3. 全通系统 3.1 定义与系统函数 3.2 全通系统的零极点关系 ...

最新文章

  1. Windows Server 2003 : 服务器群集
  2. 解决VC++ Error spawning cl.exe 问题·
  3. This application is modifying the autolayout engine
  4. Redis数据库的应用场景介绍
  5. 理工科学生如何建立对于财务三大表的基本分析呢?
  6. Python调用ansible API系列(一)获取资产信息
  7. 【LINUX学习】链接文件
  8. android 冰箱 活动,Android活动的使用
  9. redhat系统双网卡绑定
  10. @Service注解的作用
  11. 【华为云技术分享】MongoDB经典故障系列二:如何限制最大连接数?
  12. fastjson中@JSONType的使用-排除字段
  13. 5G 基站功耗,到底有多可怕?
  14. java共同方法_java-现有公共方法的NoSuchMethodError
  15. oracle怎么查导入导出记录,Oracle实验记录——数据的导入和导出
  16. Win10无线投屏功能安装失败解决办法
  17. java list 冒泡_JAVA List 排序 冒泡排序
  18. 测试人员必备:常用自动化测试工具
  19. 1357. 路径总和 II
  20. gnuplot 等高线脚本

热门文章

  1. 编写代码的「八荣八耻」- 以用户易用为荣,以复杂歧义为耻
  2. python基础05
  3. 5区块链机会没有公司可以错失
  4. RocketMQ原理解析-producer 4.发送分布式事物消息
  5. 逆向辅导:让你的IT文化恢复活力的独特方法
  6. 生态聚伙伴 方案联价值 华为首次发布企业业务解决方案伙伴计划
  7. dos中的for命令简单使用
  8. u盘安装Fedora18
  9. 我司用了 6 年的 Redis 分布式限流器,很牛逼了!
  10. 高质量的缺陷分析:让自己少写 bug