(完整word版)卡尔曼滤波实验报告

合集下载

(完整word版)卡尔曼滤波对测量数据处理的程序实现方法

(完整word版)卡尔曼滤波对测量数据处理的程序实现方法

第1章绪论1。

1 研究的目的自从1960年卡尔曼滤波提出以来,它已成为控制,信号处理与通信等领域最基本最重要的计算方法和工具之一,并已成功的应用到航空,航天,工业过程及社会经济等不同领域,比如,在雷达中,人们感兴趣的是跟踪目标,但目标的位置、速度、加速度的测量值往往在任何时候都有噪声.卡尔曼滤波利用目标的动态信息,设法去掉噪声的影响,得到一个关于目标位置的好的估计。

这个估计可以是对当前目标位置的估计(滤波),也可以是对于将来位置估计(预测),也可以是对过去位置的估计(差值或平滑)。

但随着微型计算机的普及应用,对卡尔曼滤波的数值稳定性、计算效率、实用性和有效性的要求越来越高,随着微型计算机时代的来临显著地提高了科学计算的能力,滤波大量复杂的计算在计算机种只需要几分钟就能算出,为此本文将对卡尔曼滤波进行研究。

1。

2 研究的意义卡尔曼滤波( Kalman , 1960) 是当前应用最广的一种动态数据处理方法,它具有最小无偏方差性。

把变形体视为一个动态系统,将一组观测值作为系统的输出 , 可以用卡尔曼滤波模型来描述系统的状态. 动态系统由状态方程和观测方程描述 , 以监测点的位置、速率和加速率参数为状态向量,可构造一个典型的运动模型. 状态方程中要加进系统的动态噪声. 其滤波方程是一组递推计算公式 ,计算过程是一个不断预测、修正的过程 , 在求解时,优点是不需保留用过的观测值序列,并且当得到新的观测数据时 , 可随时计算新的滤波值 , 便于实时处理观测成果 , 把参数估计和预报有机地结合起来. 卡尔曼滤波特别适合变形监测数据的动态处理.1。

3 研究的方法1。

4 课题的主要内容本文先从现代测量误差处理理论基础开始讲解,细致的写出现代测量误差都有那些函数,并详细分析讲解这些函数,在继续讲解最小二乘与卡尔曼滤波的关系,如量测值越多,只要处理得合适,最小二乘估计的均方误差就越小。

采用批处理实现的最小二乘算法,需存储所有的量测值。

卡尔曼滤波与组合导航课程实验报告

卡尔曼滤波与组合导航课程实验报告
五、源程序
clear;
clc;
%载入数据
IMU=load('C:\Users\Administrator\Desktop\卡尔曼\IMU.dat');
GPS=load('C:\Users\Administrator\Desktop\卡尔曼\GPS.dat');
%%%%%%%%%%定义常数
e=1/298.3;
else
kesai=kesai_1-pi;
end
end
if Cnb(3,3)==0
if Cnb(1,3)>0
gama=pi/2;
else
gama=-pi/2;
end
elseif Cnb(3,3)>0
gama=gama_1;
else
if Cnb(1,3)>0
gama=gama_1-pi;
else
gama=gama_1+pi;
end
end
%%%%%%%%%%%%存储惯导解算求的的速度、位置和姿态角
velocity(i,:) = [vx,vy,vz];
position(i,:) = [lat/pi*180,long/pi*180,h];
gama=1.78357*pi/180 ; %横滚角
kesai=305.34023*pi/180 ; %航向角
q=[cos(kesai/2)*cos(cita/2)*cos(gama/2)-sin(kesai/2)*sin(cita/2)*sin(gama/2);
cos(kesai/2)*sin(cita/2)*cos(gama/2)-sin(kesai/2)*cos(cita/2)*sin(gama/2);

卡尔曼滤波作用范文

卡尔曼滤波作用范文

卡尔曼滤波作用范文卡尔曼滤波(Kalman Filter)是一种用于动态系统状态估计的优化方法。

它是由美国工程师Rudolf E. Kalman在20世纪60年代提出的,并被广泛应用于各种领域,包括航空航天、自动化控制、金融和信号处理等。

卡尔曼滤波的主要作用是实现对动态系统中隐藏状态的估计。

这意味着,通过已知输入和观测数据,卡尔曼滤波可以对系统的状态进行推断。

它的核心思想是基于贝叶斯推断原理,通过结合系统模型的先验信息和观测数据的似然信息,得到经过优化的状态估计结果。

在实际应用中,卡尔曼滤波通常分为两个阶段:预测和更新。

在预测阶段,卡尔曼滤波利用系统模型和先验信息预测系统的当前状态。

在更新阶段,卡尔曼滤波根据观测数据对预测的状态进行修正,得到最终的状态估计结果。

这种预测-更新的方式使得卡尔曼滤波具有递归性质,可以实时地对系统状态进行估计。

卡尔曼滤波在众多领域中的应用十分广泛。

在航空航天领域,卡尔曼滤波被用于飞机的自动飞行控制系统,通过估计飞行器的位置、速度和姿态等状态,实现精确的飞行控制。

在自动化控制领域,卡尔曼滤波常用于机器人的定位和导航,通过估计机器人的位置,可以实现精确的路径规划和运动控制。

在金融领域,卡尔曼滤波可用于股票价格预测和投资组合优化,通过对系统状态的估计,可以获取更准确的市场预测和投资建议。

在信号处理领域,卡尔曼滤波被广泛用于雷达和无线通信中的信号分离和噪声抑制等问题,通过对信号状态的估计,可以提高系统的性能和抗干扰能力。

卡尔曼滤波能够产生优秀的估计结果的原因在于其融合了系统模型和观测数据的信息。

系统模型提供了系统的动态特性和状态转移规律,而观测数据提供了系统的外部信息和约束条件。

卡尔曼滤波通过不断地更新状态估计,使得估计结果更加准确和可靠。

此外,卡尔曼滤波还具有较好的递归性质,可以在实时的环境下进行状态估计,适用于要求实时性的应用场景。

然而,卡尔曼滤波也有其局限性。

首先,卡尔曼滤波是基于高斯假设的,要求估计的状态变量和观测数据满足高斯分布的条件。

经典的卡尔曼滤波算法doc资料

经典的卡尔曼滤波算法doc资料

经典的卡尔曼滤波算法自适应卡尔曼滤波卡尔曼滤波发散的原因如果卡尔曼滤波是稳定的,随着滤波的推进,卡尔曼滤波估计的精度应该越来越高,滤波误差方差阵也应趋于稳定值或有界值。

但在实际应用中,随着量测值数目的增加,由于估计误差的均值和估计误差协方差可能越来越大,使滤波逐渐失去准确估计的作用,这种现象称为卡尔曼滤波发散。

引起滤波器发散的主要原因有两点:(1)描述系统动力学特性的数学模型和噪声估计模型不准确,不能直接真实地反映物理过程,使得模型与获得的量测值不匹配而导致滤波发散。

这种由于模型建立过于粗糙或失真所引起的发散称为滤波发散。

(2)由于卡尔曼滤波是递推过程,随着滤波步数的增加,舍入误差将逐渐积累。

如果计算机字长不够长,这种积累误差很有可能使估计误差方差阵失去非负定性甚至失去对称性,使滤波增益矩阵逐渐失去合适的加权作用而导致发散。

这种由于计算舍入误差所引起的发散称为计算发散。

针对上述卡尔曼滤波发散的原因,目前已经出现了几种有效抑制滤波发散的方法,常用的有衰减记忆滤波、限定记忆滤波、扩充状态滤波、有限下界滤波、平方根滤波、和自适应滤波等。

这些方法本质上都是以牺牲滤波器的最优性为代价来抑制滤波发散,也就是说,多数都是次优滤波方法。

自适应滤波在很多实际系统中,系统过程噪声方差矩阵Q和量测误差方差阵R事先是不知道的,有时甚至连状态转移矩阵 或量测矩阵H也不能确切建立。

如果所建立的模型与实际模型不符可能回引起滤波发散。

自适应滤波就是这样一种具有抑制滤波发散作用的滤波方法。

在滤波过程中,自适应滤波一方面利用量测值修正预测值,同时也对未知的或不确切的系统模型参数和噪声统计参数进行估计修正。

自适应滤波的方法很多,包括贝叶斯法、极大似然法、相关法与协方差匹配法,其中最基本也是最重要的是相关法,而相关法可分为输出相关法和新息相关法。

在这里只讨论系统模型参数已知,而噪声统计参数Q 和R 未知情况下的自适应滤波。

由于Q 和R 等参数最终是通过增益矩阵K 影响滤波值的,因此进行自适应滤波时,也可以不去估计Q 和R 等参数而直接根据量测数据调整K 就可以了。

北航卡尔曼滤波实验报告-GPS静动态滤波实验

北航卡尔曼滤波实验报告-GPS静动态滤波实验

卡尔曼滤波实验报告2014 年 4 月GPS 静/动态滤波实验一、实验要求1、分别建立GPS 静态及动态卡尔曼滤波模型,编写程序对静态和动态GPS 数据进行Kalman 滤波。

2、对比滤波前后导航轨迹图。

3、画出滤波过程中估计均方差(P 阵对角线元素开根号)的变化趋势。

4、思考:① 简述动态模型与静态模型的区别与联系;② R 阵、Q 阵,P0阵的选取对滤波精度及收敛速度有何影响,取值时应注意什么;③ 本滤波问题是否可以用最小二乘方法解决,如果可以,请阐述最小二乘方法与Kalman 滤波方法的优劣对比。

二、实验原理2.1 GPS 静态滤波选取系统的状态变量为[ ]TL h λ=X ,其中L 为纬度(deg),λ为经度(deg),h 为高度(m)。

设()w t 为零均值高斯白噪声,则系统的状态方程为:310()w t ⨯=+X(1)所以离散化的状态模型为:,111k k k k k W ---=+X X Φ(2)式中,,1k k -Φ为33⨯单位阵,k W 为系统噪声序列。

测量数据包括:纬度静态量测值、经度静态量测值和高度构成31⨯矩阵Z ,量测方程可以表示为:k k k Z HX V =+(3)式中,H 为33⨯单位阵,k V 为量测噪声序列。

系统的状态模型是十分准确的,所以系统模型噪声方差阵可以取得十分小,取Q 阵零矩阵。

系统测量噪声方差阵R 由测量确定,由于位置量测精度为5m ,采用克拉索夫斯基地球椭球模型,长半径e R 为6378245m ,短半径p R 为6356863m 。

所以R 阵为:2225180()005180()0cos()005p e R R L ππ⨯⎛⎫ ⎪⨯ ⎪ ⎪⨯= ⎪⨯⨯ ⎪ ⎪ ⎪⎝⎭R (4)2.2 GPS 动态滤波动态滤波基于当前统计模型,在地球坐标系下解算。

选取系统的状态变量为Tx x x y y y z z z X x v a y v a z v a εεε⎡⎤=⎣⎦,其中,,,x x x x v a ε依次为地球坐标系下x轴上的位置、速度、加速度和位置误差分量,,y z 轴同理。

卡尔曼滤波报告

卡尔曼滤波报告

卡尔曼滤波实验报告一、实验任务产生含噪声信号X(n)=sin(2*pi*f*n)+w(n),f=0.05,w(n)~N(0,1.2)。

编写程序运用卡尔曼滤波进行去噪处理,要求画出去噪前和去噪后图形,滤波误差及收敛过程。

二、实验程序clc;clear;N=256 ; %信号与噪声的长度离散信号个数w=randn(1.2,N); %产生高斯白噪声,令方差为1.2f=0.05; %实正弦信号频率s=sin(2*pi*f*(0:N-1)) ; %产生正弦信号subplot(311);plot(s);title('有用信号s(n)')grid on;x=s+w;subplot(312);plot(x);title('加噪信号x(n)')grid on;c=[1]; %观测矩阵a=[1]; %状态转移矩阵b=[1]; %输入矩阵H=[1];R=std(w); %R是观测白噪声v(k)的方差Y(1)=20;P(1)=10;for i=1:1:N-1Y(i+1)=a*Y(i)+b*s(i);P(i+1)=a*P(i);Kg(i)=P(i+1)*H'*inv(H*P(i+1)*H'+R);Y(i+1)= Y(i+1)+Kg(i)*(x(i)-H*Y(i+1));P(i+1)=P(i+1)-Kg(i)*H*P(i+1);end;subplot(313);t=1:N;plot(t,Y);title('通过卡尔曼滤波后的估计信号y(n)')grid on;三、实验结果四、实验总结与维纳滤波器实验结果相比,卡尔曼滤波器的输出更加平滑,但是仍没有去除掉曲线中的椒盐噪声点,这一点需要继续改进。

卡尔曼滤波就是根据前一个估计值x^k-1和当前的观测值yk来对信号作递推估计,得到x^k 。

首先建立卡尔曼滤波器的模型,由状态方程和观测方程xk=Akxk-1+wk-1,y k =Ckxk+vk,由此可得到k时刻的预测值x^k’=Ak-1x^k-1与估计值y^k’=Ckx^k’=CkAkx^k-1,定义新息y~k =yk-y^k’,由于wk-1和vk的影响才产生了y~k,为了得到最有估计值,有必要利用一系列矩阵Hk 来校正预测值y^k’,此时x^k= Ak-1x^k-1+Hk(yk- CkAkx^k-1)上式为卡尔曼滤波器的递推方程,这样就可以根据前一个估计值x^k-1和当前观测值yk对信号作递推估计,得到x^k。

卡尔曼滤波简介和实例讲解(精品WORD文档)

卡尔曼滤波简介和实例讲解(精品WORD文档)

卡尔曼,美国数学家和电气工程师。

1930年5月 19日生于匈牙利首都布达佩斯。

1953年在美国麻省理工学院毕业获理学士学位,1954年获理学硕士学位,1957年在哥伦比亚大学获科学博士学位。

1957~1958年在国际商业机器公司(IBM)研究大系统计算机控制的数学问题。

1958~1964年在巴尔的摩高级研究院研究控制和数学问题。

1964~1971年到斯坦福大学任教授。

1971年任佛罗里达大学数学系统理论研究中心主任,并兼任苏黎世的瑞士联邦高等工业学校教授。

1960年卡尔曼因提出著名的卡尔曼滤波器而闻名于世。

卡尔曼滤波器在随机序列估计、空间技术、工程系统辨识和经济系统建模等方面有许多重要应用。

1960年卡尔曼还提出能控性的概念。

能控性是控制系统的研究和实现的基本概念,在最优控制理论、稳定性理论和网络理论中起着重要作用。

卡尔曼还利用对偶原理导出能观测性概念,并在数学上证明了卡尔曼滤波理论与最优控制理论对偶。

为此获电气与电子工程师学会(IEEE)的最高奖──荣誉奖章。

卡尔曼著有《数学系统概论》(1968)等书。

什么是卡尔曼滤波最佳线性滤波理论起源于40年代美国科学家Wiener和前苏联科学家Kолмогоров等人的研究工作,后人统称为维纳滤波理论。

从理论上说,维纳滤波的最大缺点是必须用到无限过去的数据,不适用于实时处理。

为了克服这一缺点,60年代Kalman把状态空间模型引入滤波理论,并导出了一套递推估计算法,后人称之为卡尔曼滤波理论。

卡尔曼滤波是以最小均方误差为估计的最佳准则,来寻求一套递推估计的算法,其基本思想是:采用信号与噪声的状态空间模型,利用前一时刻地估计值和现时刻的观测值来更新对状态变量的估计,求出现时刻的估计值。

它适合于实时处理和计算机运算。

卡尔曼滤波的实质是由量测值重构系统的状态向量。

它以“预测—实测—修正”的顺序递推,根据系统的量测值来消除随机干扰,再现系统的状态,或根据系统的量测值从被污染的系统中恢复系统的本来面目。

卡尔曼滤波实验报告

卡尔曼滤波实验报告

一、实验目的1. 理解卡尔曼滤波的基本原理和算法流程;2. 掌握卡尔曼滤波在实际应用中的数据预处理、模型建立和参数调整;3. 分析卡尔曼滤波在不同场景下的性能表现。

二、实验环境1. 操作系统:Windows 102. 编程语言:Python3. 库:NumPy、SciPy、Matplotlib三、实验内容1. 卡尔曼滤波基本原理及算法流程卡尔曼滤波是一种递归的线性最小方差估计方法,用于处理线性动态系统和线性观测系统。

其基本原理如下:(1)状态方程:描述系统状态随时间的变化规律,即 \(x_{k+1} = A \cdot x_k + B \cdot u_k\),其中 \(x_k\) 表示状态向量,\(A\) 为状态转移矩阵,\(u_k\) 为控制输入。

(2)观测方程:描述观测值与系统状态之间的关系,即 \(z_k = H \cdot x_k + v_k\),其中 \(z_k\) 表示观测向量,\(H\) 为观测矩阵,\(v_k\) 为观测噪声。

(3)卡尔曼滤波算法:a. 初始化:设定初始状态 \(x_0\) 和初始协方差 \(P_0\);b. 预测:根据状态方程和初始状态,计算预测状态 \(x_k^{\hat{}}\) 和预测协方差 \(P_k^{\hat{}}\);c. 更新:根据观测方程和实际观测值,计算观测残差 \(y_k = z_k - H\cdot x_k^{\hat{}}\) 和观测残差协方差 \(S_k\);d. 估计:根据卡尔曼增益 \(K_k = P_k^{\hat{}} \cdot H^T \cdot (H\cdot P_k^{\hat{}} \cdot H^T + R)^{-1}\),更新状态 \(x_k = x_k^{\hat{}}+ K_k \cdot y_k\) 和协方差 \(P_k = (I - K_k \cdot H) \cdotP_k^{\hat{}}\)。

2. 卡尔曼滤波实验步骤(1)数据预处理:收集实验数据,包括系统状态、观测值和控制输入等,对数据进行清洗和标准化处理。

  1. 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
  2. 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
  3. 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。

实验:卡尔曼滤波实现
实验报告姓名:学号:日期:(以下内容用五号字书写,本页空白不够可续页)
'1
'1
(1)(1/)(1)(1)(1)(1)(1/1)(1)(1)(2)
K k P k k H k S k K k P k k H k R k --⎧+=+++⎪⎨+=++++⎪⎩
(4) 则状态更新方程为:
ˆˆ(1/1)(1/)(1)(1)X
k k X k k K k V k ++=++++ 协方差更新方程为:
(1/1)(1/)(1)(1)(1/)P k k P k k K k H k P k k ++=+-+++ Matlab 程序如下:
clear clc close all N=200; w=randn(2,N); x=zeros(2,N); x(:,1)=[1;1]; a=[1.1 0;0 1.02]; for k=2:N;
x(:,k)=a*x(:,k-1)+w(k-1); end
V=randn(2,N); Rvv=cov(V'); Rww=cov(w'); c=[1 0;0 0.9]; Y=c*x+V; p=zeros(2,2*N); s=zeros(2,N); b=zeros(2,2*N); x1=zeros(2,N); z1=x1; zp1=b;
p(:,1:2)=[0 0;0 0]; s(:,1)=[4;8]; for t=2:N;
x1(:,t-1)=a*s(:,t-1)+w(:,t-1);%X(k/k-1)
p1(:,t*2-1:t*2)=a*p(:,t*2-3:t*2-2)*a'+Rww;%X(k|k-1)的协方差 z1(:,t-1)=c*x1(:,t-1);%测量估计
zp1(:,t*2-1:t*2)=c*p1(:,t*2-1:t*2)*c'+Rvv;%测量估计协方差 b(:,t*2-1:t*2)=p1(:,t*2-1:t*2)*c'/zp1(:,t*2-1:t*2);%Kg 卡尔曼增益 s(:,t)=x1(:,t-1)+b(:,t*2-1:t*2)*(Y(:,t)-z1(:,t-1));%当前状态的最优结果
p(:,t*2-1:t*2)=p1(:,t*2-1:t*2)-b(:,t*2-1:t*2)*c*p1(:,t*2-1:t*2);%更新当前状态估计值的协方差 end t=1:N;
plot(s(1,:),s(2,:),'ro',Y(1,:),Y(2,:),'g.',x(1,:),x(2,:),'b*'); xlabel('time'); ylabel('Amplitude'); title('Kalman Filter')
legend('kalman 滤波估计值','测量值','真实值',4) grid on
二、实验过程
(1) 分析卡尔曼滤波算法原理,总结卡尔曼滤波算法流程 (2) 在第一步的基础上编写matlab 程序
(3) 设计状态方程及测量方程,确定初值进行滤波。

实验过程中遇到的问题:(a)矩阵的维数没有对应好,matlab 报错,在搞清楚各个变量的物理意义并进行公示推算后终于调整好了所有的矩阵及向量维数;(b )维数调整好后程序可以运行,但结果很不稳定,滤波值也没能很好地跟踪真实值,期初以为是状态转移矩阵与测量矩阵选取的问题,后来发现是在计算协方差是少求了转置;(c )应注意状态转移矩阵与测量矩阵的选取,不然不容易观察滤波结果。

三、实验分析
2000
4000
6000
800010000
12000
14000
16000
05001000150020002500300035004000X1
X 2
Kalman Filter
题目 ##
姓名:学号:日期:(以下内容用五号字书写,本页空白不够可续页)。

相关文档
最新文档