热门标签 | HotTags
当前位置:  开发笔记 > 前端 > 正文

Kalman滤波Matlab仿真

先列出KalMan的5个基本方程公式1:得到过度时刻(k|k-1)的估计值公式2:得到过度时刻的协方差,Q为噪声偏差值,由用户定义公式3:估计本时刻的最优&#

先列出KalMan的5个基本方程


公式1: 得到过度时刻  (k|k-1) 的估计值

公式2: 得到过度时刻的协方差, Q为噪声偏差值,由用户定义

公式3: 估计本时刻的最优值,其中H为测量值对真实值的增益,比如假定真实值为100, 测量值为90,则测量值对真实值的增益为0.9

公式4: 计算本时刻的卡尔曼增益H'是H的转置矩阵,R为估计值的偏差值

公式5: 更新协方差


那么做卡尔曼滤波是需要初始化的参数有:


1. 初始化两个0时刻值,这两个值不用太在意,因为kalman会逐渐对其收敛修正

0时刻的估计值,需要赋一个初值   x(0)

0时刻的协方差,需要赋一个初值  p(0) 


2. 系统相关的配置值,这些值决定了kalman的滤波性能

A 状态转移矩阵,用1唯的可理解为上一时刻到下一时刻的值改变了多少,A为零表示下一时刻和上一时刻的估计值相同,

若下一时刻同上一时刻的估计值认为相同则A可设为1(一维的哦)

B,u(k)是控制量,若无控制量则可不用


H 测量值和真实值的测量矩阵,举个例子,若电机实际转动了100度,而测量值为95度,测量值比真实值的比为0.95,

若认了测量值测得值与真实值没有差别,则H可设为1

Q 真实值被叠加的高斯白噪声的偏差,这个值表征了噪声的抖动的标准偏差,需要用户根据实际的噪声情况标定

R    测量值的高斯白噪声,同上需要用户标定



%%%%%%%%%%%%%%%%%%%%%%%%%%%     Matlab程序如下   %%%%%%%%%%%%%%%%%%%%%%%%%%%%%

clear
N=200;      %采样点个数设定


%得到高斯白噪声
w(1)=0;
w=randn(1,N)
x(1)=0;
a=1;        %可理解为当前值到下一个值的增益,1即为不变


%得到加入了高斯白噪声的信号
for k=2:N;
x(k)=a*x(k-1)+w(k-1);       
end


%得到测量值的高斯白噪声的方差
V=randn(1,N);
q1=std(V);


Rvv=q1.^2;
q2=std(x);
Rxx=q2.^2;


%得到高斯白噪声的方差
q3=std(w);
Rww=q3.^2;      


%得到测量值Y
c=0.2;      %可理解为测量值是实际值的增益
Y=c*x+V;


p(1)=0;
s(1)=0;


for t=2:N;
p1(t)=a.^2*p(t-1)+Rww;                  %计算当前协方差
b(t)=c*p1(t)/(c.^2*p1(t)+Rvv);          %b(t)为计算的到的卡尔曼增益
s(t)=a*s(t-1)+b(t)*(Y(t)-a*c*s(t-1));   %估计值最优值
p(t)=p1(t)-c*b(t)*p1(t);                %更新协方差       
end


%显示波形
t=1:N;
plot(t,s,'r',t,Y,'g',t,x,'b');
xlabel('采样时刻');
ylabel('值');
legend('Kalman滤波值','测量值','实际值');


推荐阅读
  • 本文介绍了如何通过扩展 UnityGUI 创建自定义和复合控件,以满足特定的用户界面需求。内容涵盖简单和静态复合控件的实现,并展示了如何创建复杂的 RGB 滑块。 ... [详细]
  • 本文详细介绍了中央电视台电影频道的节目预告,并通过专业工具分析了其加载方式,确保用户能够获取最准确的电视节目信息。 ... [详细]
  • Unity编辑器插件:NGUI资源引用检测工具
    本文介绍了一款基于NGUI的资源引用检测工具,该工具能够帮助开发者快速查找和管理项目中的资源引用。其功能涵盖Atlas/Sprite、字库、UITexture及组件的引用检测,并提供了替换和修复功能。文末提供源码下载链接。 ... [详细]
  • 本文将深入探讨如何在不依赖第三方库的情况下,使用 React 处理表单输入和验证。我们将介绍一种高效且灵活的方法,涵盖表单提交、输入验证及错误处理等关键功能。 ... [详细]
  • 探讨如何从数据库中按分组获取最大N条记录的方法,并分享新年祝福。本文提供多种解决方案,适用于不同数据库系统,如MySQL、Oracle等。 ... [详细]
  • 本文介绍了如何使用 Python 的 Matplotlib 和 Pandas 库进行数据可视化。通过示例代码展示了折线图、柱状图和水平柱状图的创建方法,并解释了图表参数设置的具体细节。 ... [详细]
  • 利用生成对抗网络生成多标签离散电子健康记录
    本文探讨了通过生成对抗网络(GAN)生成合成电子健康记录(EHR)的方法,旨在解决隐私保护问题并促进医学研究。论文地址为:https://arxiv.org/abs/1703.06490v1。该方法通过生成高维离散变量的综合EHR数据,显著提升了医学研究中的数据可用性和安全性。 ... [详细]
  • 本文探讨了如何在iOS开发环境中,特别是在Xcode 6.1中,设置和应用自定义文本样式。我们将详细介绍实现方法,并提供一些实用的技巧。 ... [详细]
  • Kubernetes 持久化存储与数据卷详解
    本文深入探讨 Kubernetes 中持久化存储的使用场景、PV/PVC/StorageClass 的基本操作及其实现原理,旨在帮助读者理解如何高效管理容器化应用的数据持久化需求。 ... [详细]
  • 本文介绍如何利用 Python 中的 NumPy 和 Matplotlib 库,从 NumPy 数组中绘制线图。通过具体的代码示例和详细解释,帮助读者理解并掌握这一技能。 ... [详细]
  • 利用决策树预测NBA比赛胜负的Python数据挖掘实践
    本文通过使用2013-14赛季NBA赛程与结果数据集以及2013年NBA排名数据,结合《Python数据挖掘入门与实践》一书中的方法,展示如何应用决策树算法进行比赛胜负预测。我们将详细讲解数据预处理、特征工程及模型评估等关键步骤。 ... [详细]
  • 本文介绍如何使用.NET Framework开发一个简单的Windows Forms应用程序,以实现图形在窗口内的动态移动。文章详细描述了代码结构、关键逻辑以及最终的实现效果。 ... [详细]
  • 深入理解K近邻分类算法:机器学习100天系列(26)
    本文详细介绍了K近邻分类算法的理论基础,探讨其工作原理、应用场景以及潜在的局限性。作为机器学习100天系列的一部分,旨在为读者提供全面且深入的理解。 ... [详细]
  • 社交网络中的级联行为 ... [详细]
  • 本文详细介绍了Grand Central Dispatch (GCD) 的核心概念和使用方法,探讨了任务队列、同步与异步执行以及常见的死锁问题。通过具体示例和代码片段,帮助开发者更好地理解和应用GCD进行多线程开发。 ... [详细]
author-avatar
456456
这个家伙很懒,什么也没留下!
PHP1.CN | 中国最专业的PHP中文社区 | DevBox开发工具箱 | json解析格式化 |PHP资讯 | PHP教程 | 数据库技术 | 服务器技术 | 前端开发技术 | PHP框架 | 开发工具 | 在线工具
Copyright © 1998 - 2020 PHP1.CN. All Rights Reserved | 京公网安备 11010802041100号 | 京ICP备19059560号-4 | PHP1.CN 第一PHP社区 版权所有