完整word版Kalman滤波MATLAB综合实验报告
Kalman滤波matlab算例

. Kalman 滤波器、预报器1. 计算系统中,[]0.60.41==110.2 1.12H -⎡⎤⎡⎤ΦΓ=⎢⎥⎢⎥⎣⎦⎣⎦,,。
1) 取初值为:x^(0|0)=[0 0]',P(0|0)=[0 0;0 0];2) clear all ;3) clc;4) bushu=300;5) Q=;6) R=;7) randn('seed',1);w=sqrt(Q)*randn(1,bushu);8) randn('seed',2);v=sqrt(R)*randn(1,bushu);9) phi=[ ;10) ];11) gama=[1 2]';12) H=[1 1];13) x(:,1)=[0 0]';y(1)=H*x(:,1)+v(1);14) for i=2:bushu15) x(:,i)=phi*x(:,i-1)+gama*w(i-1);16) y(i)=H*x(:,i)+v(i);17) end18)19) n=2;20) xjian(:,1)=zeros(2,1);p(:,:)=zeros(2);21) xjian_2(:,1:2)=zeros(2);22) for i=1:bushu-123)%*************Kalman滤波器*************************24) pp(:,n*(i-1)+1:n*i)=phi*p(:,n*(i-1)+1:n*i)*phi'+gama*Q*gama';25) kf(:,i+1)=pp(:,n*(i-1)+1:n*i)*H'*inv(H*pp(:,n*(i-1)+1:n*i)*H'+R);26) p(:,n*i+1:n*(i+1))=[eye(n)-kf(:,i+1)*H]*pp(:,n*(i-1)+1:n*i);27) xxjian(:,i+1)=phi*xjian(:,i);28) epsilon(:,i+1)=y(i+1)-H*xxjian(:,i+1);29) xjian(:,i+1)=xxjian(:,i+1)+kf(:,i+1)*epsilon(:,i+1);30)%***************预报器*************************31) xjian_2(:,i+2)=phi*xxjian(:,i+1);32)end33)t=1:bushu;34)subplot(2,1,1);plot(t,x(1,t),'b',t,xjian(1,t),'r:');35)subplot(2,1,2);plot(t,x(2,t),'b',t,xjian(2,t),'r:');36)subplot(2,1,1);plot(t,x(1,t),'b',t,xjian_2(1,t),'r:');37)subplot(2,1,2);plot(t,x(2,t),'b',t,xjian_2(2,t),'r:');2.仿真结果与分析kalman滤波仿真结果如图1所示。
(完整word版)卡尔曼滤波实验报告

实验:卡尔曼滤波实现实验报告姓名:学号:日期:(以下内容用五号字书写,本页空白不够可续页)'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)Xk 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); endV=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) 设计状态方程及测量方程,确定初值进行滤波。
卡尔曼滤波实验及matlab实现

实验一 卡尔曼滤波一、 实验目的1、了解卡尔曼滤波的准则和信号模型,以及卡尔曼滤波的应用。
2、熟练掌握卡尔曼滤波的递推过程,提高对信号进行处理的能力。
3、分析讨论实际状态值和估计值的误差。
二、实验原理1、卡尔曼滤波简介卡尔曼滤波是解决以均方误差最小为准则的最佳线性滤波问题,它根据前一个估计值和最近一个观察数据来估计信号的当前值。
它是用状态方程和递推方法进行估计的,而它的解是以估计值(常常是状态变量的估计值)的形式给出其信号模型是从状态方程和量测方程得到的。
卡尔曼过滤中信号和噪声是用状态方程和测量方程来表示的。
因此设计卡尔曼滤波器要求已知状态方程和测量方程。
它不需要知道全部过去的数据,采用递推的方法计算,它既可以用于平稳和不平稳的随机过程,同时也可以应用解决非时变和时变系统,因而它比维纳过滤有更广泛的应用。
2、卡尔曼滤波的递推公式)(11∧-∧-∧-+=k k k k k k k k x A C y H x A x (1)1)(-+''=k k k k k k k R C P C C P H ττ.........(2) 11--+='k k k k k Q A P A P τ (3)k k k k P C H I P '-=)(………(4) 3、递推过程的实现如果初始状态0x 的统计特性][0x E 及]var[0x 已知,并 令 000][μ==∧x E x又]var[]))([(000000x x x x x E P =--=∧∧τ将0P 代入式(3)可求得1P ',将1P '代入式(2)可求得1H ,将此1H 代入式(1)可求得在最小均方误差条件下的∧1x ,同时将1P '代入式(4)又可求得1P;由1P又可求2P ',由2P '又可求得2H ,由2H 又可求得∧2x ,同时由2H 与2P '又可求得2P ……;以此类推,这种递推计算方法用计算机计算十分方便。
kalman-卡尔曼滤波器实验

实验 卡尔曼过滤信号提取方法一. 实验目的1. 利用计算机软件实现随机信号的卡尔曼滤波。
2. 考察影响卡尔曼滤波方法性能的各种因素。
3. 观察卡尔曼滤波方法与维纳滤波方法的优缺点。
二. 实验原理与方法已知系统的状态的状态方程和量测方程:111k k kk k k k W A B xx u w ---=++(1) kkkkkCVyxv =+(2)其中kA ,kB ,kW ,kC 和kV 为已知的系统参数,ku 为动态系统的确定性激励,kw 和kv 事均值为0,方差分别为Rw 和Rv 的高斯白噪声,k w ,k v 和0x 是相互独立的,问题是如何来从观测数据估计kx 。
利用最小均方误差准则我们可以得到一组卡尔曼滤波的递推公式:111^^^()k k kk kk kk k kC Hy A A B u xx x ----=++(3)1''()T T k k k k kk kC C C H PPR -=+ (4) '1'T kkkk kQP A P A-+=(5) '()kk kkI CP H P=-(6)其中T kvkk V R P R =111T wk k k QWWR---=T 表示转置运算,I 为单位矩阵,如果我们已知初始状态0x 的统计特性,则可选择上述递推公式的初始值为:00^[]E x x=,^()V a r xp=因此当我们已知k H ,利用前一个k x 的估计值1^k x -与当前值ky ,就可以得到在最小均方误差准则下的最佳估计值^kx 。
三. 实验内容及步骤1.在matlab上建立M文件,代码如下:Ak = input('Ak=');Bk = input('Bk=');Wk = input('Wk=');Vk = input('Vk=');Ck = input('Ck=');Rw = input('Rw=');Rv = input('Rv=');x(1) = input('x0=');P(1) = input('p0=');N = input('请输入维数N=');L = input('请输入yk的样本个数L=');v = sqrt(Rv)*(randn(1,L));w = sqrt(Rw)*(randn(1,L));y(1)=Ak*x(1)+Vk*v(1);y1(1) = Ck*x(1);for k=2:L;x(k) = Ak*x(k-1)+Bk*u(k-1)+Wk*w(k-1);y(k)=Ck*x(k)+Vk*v(k);y1(k)=Ck*x(k);endRk = Vk*Vk'*Rv;Qk = Wk*Wk'*Rw;I = eye(N);AC=Ck*Ak;for k=2:LPdk = Ak*P(k-1)*Ak'+Qk;Hk = Pdk*Ck'/(Ck*Pdk*Ck'+Rk);x1(k) = Ak*x1(k-1)+Hk*(y(k)-AC*x(k-1));P(k) = (I-Hk*Ck)*Pdk;y2(k) = Ck*x1(k);endn=1:L;%%»绘图,产生的L个信号yi(k)=Ck*Xk,以及实际的信号y(k)figure(1)stem(n,y1,'r','*');hold onstem(n,y,'b','o');title('信号y1(k)=Ck*xk红色(*)与实际信号yk蓝色(o)的比较');%»绘图产生的L个估计信号x(K),以及实际信号xkfigure(2)stem(n,x1,'r','*');hold onstem(n,x,'b','o');title('估计信号x(k)红色(*)与真实信号xk的比较’);%»绘图,产生的L个信号yik=Ck*x(k),估计信号y2(k)=Ck*x(k)figure(3)stem(n,y1,'r','*');hold onstem(n,y2,'b','o');title('信号yik=Ck*x(k)红色(*)与估计信号y2(k)=Ck*x(k)蓝色(o)的就、比较'); figure(4)stem(n,H,'r','*');hold onstem(n,P,'b','o');title(‘Pk 红色(*)与Hk 蓝色(o )的比较’);2.运行卡尔曼滤波程序,分别输入参编变量Ak=0.95,Bk=0,Wk=1,Vk=1,Ck=1,Rw=0.0975,Rv=1.0,x0=0,p0=1e-12,维数N=1,yk 的样本个数L=100 (1)观察:kalman 滤波的效果如图1所示:其均方误差为E[2()n e ]=1.443528654826331,(2)kalman 滤波的收敛情况如图2所示:(3)与理想的维娜滤波器相比,kalman 滤波器的性能差一点 3.分别取Rw=1,0.01, 1210-,其他参数不变,观察的Rw 对滤波性能的影响分别,如下三图:图3,图4,图5分别是Rw=1, 0.01,1210-时^kx 与实际信号k x 的比较,其均方误差分别为:E[2()n e ]=5.409765863162916,E[2()n e ]=0.139340339669452,E[2()n e ]=6.063221649414783e-012,显然Rw 的变化直接影响着ky 与其估计^k y 的性能,Rw 越大^k y 的估计越差,对其影响分别如图6,图7,图8所示:图3图4图1 图24.改变Rv=20, 0.1, 410-,其他输入同步骤2中的参数,观察并记录Rv 变化对滤波性能的影响,如下三图:图9,图10,图11分别是Rv=20, 0.1, 410-时^kx与实际信号k x 的比较,其均方误差分别为:E[2()n e ]=1.425937*********,E[2()n e ]=0.692969170368545,E[2()n e ]=0.000866756398945823,Rv 的大小直接影响着信号估计值^kx 接近实际信号k x 程度,Rv 越大滤波效果越差。
《信号与分析》卡尔曼滤波实验报告

实验目的:
1.了解卡尔曼滤波。
2.学习卡尔曼滤波滤波的应用及其MATLAB实现卡尔曼滤波的算法。
实验仪器:MATLAB
实验内容及步骤:
functionmain
N=120;CON=28;
Xexpect=CON*ones(1,N);
X=zeros(1,N);
Xkf=zeros(1,N);
实验心得:
通过本次实验,我们学习了卡尔曼滤波,它是一种算法,卡尔曼滤波会根据各测量量在不同时间下的值,考虑各时间下的联合分布,产生比仅基于单个测量值更精确的未知变量的估计,从过去到现在都在用,用途十分广泛。
plot(t,Xexpect,'-b',t,X,'-r',t,Z,'-k',t,Xkf,'-g');
legend('expected','real','measure','kalman extimate');
xlabel('sample time');
ylabel('temperature');
title('Kalman Filter Simulation');
end
Err_Messure=zeros(1,N);
Err_Kalman=zeros(1,N);
fork=1:N
Err_Messure(k)=abs(Z(k)-X(k));
Err_Kalman(k)=abs(Xkf(k)-X(k));
end
t=1:N;
figure('Name','Kalman Filter Simulation','NumberTitle','off');
MATLAB中的Kalman滤波器设计

MATLAB中的Kalman滤波器设计引言Kalman滤波器是一种常用于估计随时间演变的系统状态的算法。
它通过观测值和系统模型之间的协方差来融合测量和预测,从而提供对系统状态的最优估计。
在MATLAB中,实现Kalman滤波器设计相对简单,本文将介绍MATLAB中Kalman滤波器的基本原理和常见的应用案例。
一、 Kalman滤波器基本原理Kalman滤波器的基本原理可以概括为两个步骤:预测和更新。
预测步骤根据系统的动力学模型和先前的状态估计,使用预测方程计算下一个时间步的状态预测和协方差预测。
更新步骤则是在测量信息的基础上,使用更新方程将预测的状态和协方差修正为更准确的估计。
预测步骤:1. 根据系统的动力学模型,使用预测方程计算状态预测值x_prior和协方差预测值P_prior:x_prior = F * x_est + B * uP_prior = F * P_est * F' + Q其中,F是状态转移矩阵,x_est和P_est是先前时间步的状态估计和协方差估计,B是控制输入矩阵,u是控制输入向量,Q是系统过程噪声的协方差矩阵。
更新步骤:1. 根据观测模型,使用更新方程计算观测预测值z_prior和观测协方差S:z_prior = H * x_priorS = H * P_prior * H' + R其中,H是观测矩阵,R是观测噪声的协方差矩阵。
2. 计算卡尔曼增益K:K = P_prior * H' * inv(S)3. 根据观测值z和观测预测值z_prior,计算状态更新值x_update和协方差更新值P_update:x_update = x_prior + K * (z - z_prior)P_update = (eye(size(x_est, 1)) - K * H) * P_prior二、案例研究:目标跟踪Kalman滤波器在目标跟踪领域有广泛的应用。
MATLAB图像滤波实验报告

1图像处理实验实验报告院(系)名称专业名称学生姓名学号任课老师年月日1 实验目的利用MATLAB实现图像滤波,边界检测,从空间域与频域上加深对图像滤波的理解。
2 实验内容1. 对lena.bmp分别添加高斯、椒盐、泊松噪声,并比较高斯滤波与中值滤波的效果。
(使用matlab自带函数即可)2. 对lena.bmp实现laplace算子、Sobel算子、Kirch算子、Canny算子等边界检测算子中的任何两个;(不使用matlab自带函数)3. 通过观察rect.bmp和rect-45度.bmp的傅立叶频谱,了解图像傅立叶变换的旋转、平移等特性;4. 对grid.bmp实现理想低通;5. 对cave.jpg实现同态滤波算法,观察光照校正的效果(使用高斯型高通滤波器的离散化结果作为模板)。
3 实验步骤及算法流程4 实验结果分析4.1 空间域滤波图1 加高斯噪声与滤波图2 密度为0.1的椒盐噪声与滤波图3 密度为0.5的椒盐噪声与滤波图4 加泊松噪声与滤波高斯滤波是构造一个高斯卷积掩膜,对每一个点的邻域进行卷积达到滤波的效果,中值滤波是用邻域中像素的中值代替当前像素,是非线性的。
分析以上三幅图,知高斯滤波的效果对每种噪声差不多;中值滤波对椒盐噪声来说效果非常好,在椒盐密度不大的情况下几乎可以完全去除噪声。
以以上四幅图来说,中值滤波的效果要比高斯滤波的效果好。
4.2 边界检测图5 Laplace算子检测边界图6 Sobel算子检测边界4.3 频域转换图7 旋转前的频域(经fftshift处理)图8 旋转45°后的频域(经fftshift处理) 经上图可知,当图像旋转45°后,相应的频域也旋转45°。
4.4 频域低通滤波图9 原始图像grid.bmp的频域(经fftshift处理)中心尖峰的两侧出现两个次尖峰,对应正弦噪声的频率,需将其滤掉。
图10 处理后的频域进行频域的处理后,空间域上的图像如下所示:图11 对grid.bmp低通滤波4.5 同态滤波图12 原始图像cave.jpg 选择合适的高通滤波器进行同态滤波的效果如下:图13 同态滤波后的图像5 思考题1. 依次给出“高斯平滑滤波器、中值滤波器、laplace滤波器”是线性还是非线性的。
卡尔曼滤波报告

卡尔曼滤波实验报告一、实验任务产生含噪声信号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。
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
《数学实验》综合实验报告实验名称综合实验(Kalman滤波)2016年 5月一、【实验目的】明白滤波计算流程能够调用相关函数进行数据处理使用循环函数和二维曲线画图有效的构建仿真模型,产生模拟数据二、【实验原理分析】卡尔曼滤波器是一个“optimal recursive data processing algorithm(最优化自回归数据处理算法)”。
对于解决很大部分的问题,它是最优,效率最高甚至是最有用的。
它的广泛应用已经超过30年,包括机器人导航,控制,传感器数据融合甚至在军事方面的雷达系统以及导弹追踪等等。
近来更被应用于计算机图像处理,例如头脸识别,图像分割,图像边缘检测等等。
设系统可用一个线性随机微分方程来描述:X(k)=A X(k-1)+B U(k)+W(k)再加上系统的测量值:Z(k)=H X(k)+V(k)上两式子中,X(k)是k时刻的系统状态,U(k)是k时刻对系统的控制量。
A和B是系统参数,对于多模型系统,他们为矩阵。
Z(k)是k时刻的测量值,H是测量系统的参数,对于多测量系统,H为矩阵。
W(k)和V(k)分别表示过程和测量的噪声。
他们被假设成高斯白噪声,他们的协方差分别是Q,R(这里假设他们不随系统状态变化而变化)。
对于满足上面的条件(线性随机微分系统,过程和测量都是高斯白噪声),卡尔曼滤波器是最优的信息处理器。
首先要利用系统的过程模型,来预测下一状态的系统。
假设现在的系统状态是k,根据系统的模型,可以基于系统的上一状态而预测出现在状态:X(k|k-1)=A X(k-1|k-1)+B U(k) (1)式(1)中,X(k|k-1)是利用上一状态预测的结果,X(k-1|k-1)是上一状态最优的结果,U(k)为现在状态的控制量,如果没有控制量,它可以为0。
到现在为止,我们的系统结果已经更新了,可是,对应于X(k|k-1)的协方差还没更新。
我们用P表示协方差:P(k|k-1)=A P(k-1|k-1) A'+Q (2)式(2)中,P(k|k-1)是X(k|k-1)对应的协方差,P(k-1|k-1)是X(k-1|k-1)对应的协方差,A'表示A的转置矩阵,Q是系统过程的协方差。
式子1,2就是卡尔曼滤波器5个公式当中的前两个,也就是对系统的预测。
现在我们有了现在状态的预测结果,然后我们再收集现在状态的测量值。
结合预测值和测量值,我们 2可以得到现在状态(k)的最优化估算值X(k|k):X(k|k)= X(k|k-1)+Kg(k) (Z(k)-H X(k|k-1)) (3)其中Kg为卡尔曼增益(Kalman Gain):Kg(k)= P(k|k-1) H' / (H P(k|k-1) H' + R) (4)到现在为止,我们已经得到了k状态下最优的估算值X(k|k)。
但是为了要令卡尔曼滤波器不断的运行下去直到系统过程结束,我们还要更新k状态下X(k|k)的协方差:P(k|k)=(I-Kg(k) H)P(k|k-1) (5)其中I 为1的矩阵,对于单模型单测量,I=1。
当系统进入k+1状态时,P(k|k)就是式子(2)的P(k-1|k-1)。
这样,算法就可以自回归的运算下去。
、MATLAB中已经给出了滤波函数,以下为直接调用方法:设线性系统为其调用格式为[ kest, L, P]=kalman (sys, Qn, Rn, Nn)[ kest, L, P]=kalman(sys, Qn, Rn, Nn, sensors, known)[kest,L,P,M,Z]=kalman(sys,Qn,Rn,Nn)最后一种调用格式只限于离散系统。
三、【实验内容及数据来源】已知离散系统表示状态量x的第二个分量。
e与v是互不相关的高斯白第一式为系统方程,第二式为观测方程,噪声。
的真值,由此系统方程构造出k=1,2,…30的数据,构造时加上系统噪声干扰,再由假设观测方程构造出观测数据并加观测噪声干扰,并以此作为仿真数据。
用Kalman滤波对仿真数据进行滤波处理,并与真实结果比较。
3【实验程序】四、%%%%%%%系统描述%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% x[n+1]=Ax[n]+Bu[n]+Gw[n]% y[n]=Cx[n]+Du[n]+Hw[n]+v[n] %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%状态转移矩阵%A=[0.49 0.298 0.4120.401 -0.391 0.391-0.992 0.401 0.296];矩阵% B B=zeros(3,3);矩阵% G G=eye(3,3);向量% C矩阵 C=[0 1 0];D=[0 0 0];H=zeros(1,3);状态向量初值(真值)%x(:,1)=[10.9 8.481 -4.3]';状态向量初始估计值%guji=[20.1 21.3 20.7]';% 进入循环 for i=2:30正态分布数据产生 %c w=randn(3,1);v=randn(1,1);4%真实数据x(:,i)=A*x(:,i-1);%人为制造系统误差x1(:,i)=x(:,i)+w;Qn=eye(2,2);Rn=1;Nn=0;%人为制造观测数据的误差z0(:,i)=C*x1(:,i)+v;%建立Kalman的系统参数sys=ss(A,[B,G],C,[D,H],-1);[kest,L,P,M,Z]=kalman(sys,Qn,Rn,Nn);%得到估计数据guji(:,i)=A*guji(:,i-1)+L*(z0(:,i)-C*A*guji(:,i-1)); endsubplot(2,2,1)% 做出真值曲线 x1plot(x(1,:))hold on% 做出在噪声污染情况下的滤波估计值曲线 x1plot(guji(1,:),':m')hold offlegend('real of x1','estimate of x1')gridsubplot(2,2,2)% 做出真值曲线 x2plot(x(2,:))hold on% 做出在噪声污染情况下的滤波估计值曲线 x2plot(guji(2,:),':m')5hold offlegend('real of x2','estimate of x2')gridsubplot(2,2,3:4)% 做出真值曲线 x2plot(x(3,:))hold on% 做出在噪声污染情况下的滤波估计值曲线 x3plot(guji(3,:),':m')hold offlegend('real of x1','estimate of x1')grid五、【实验结果】为了阐述kalman滤波的基本计算思路,在试验中选择了最简单的一种系统模型,线性定常动力系统。
在实际应用中很多时候面对的都是非线性而且时变系统,这有时候性质要复杂一些。
最后的结果信息我们反映在图9.2中,这只是结果的直观反应,更多的时候需要的是计算结果。
表9.1中给出了真实的运动轨迹。
6Kalman滤波处理的与真实值的比较1.1 图真实的运动状态数1.17,可以看出在序列靠后的地方真实1.21.1与表表1.2给出了三个分量的滤波处理结果。
如果对比表8【实验心得】六、中有丰富的图形处理能力,提供了绘制各种图形、图像数据的函数。
它可以提供了一组绘制MATLAB内部还包含丰富的数学函数TLAB二维和三维曲线的函数,他们还可以对图形进行旋转、缩放等操作。
MA 和数据类型,使用方便且功能非常强大。
的系统环境,数据的各种运算,矩阵的分析和处理,程序设计,绘图,数值计本学期通过对MA TLAB的实用方法。
通过老师的讲解与自己上机的操作,使我在短时算及符号运算的学习,初步掌握了MA TLAB,同时,通过上机实验,对理论知识的复习巩固实践,可以自己根据例题编写设计间内学会使用MATLAB 简单的程序来实现不同的功能,绘制出比较满意的二维三维图形,在实践中找到乐趣。
是一个实用性很强,操作相对容易,比较完善的工具软件,使用起来比较方便,通过操作可MATLAB 以很快看到结果,能够清晰的感觉到成功与失败,虽然课程中也会出现一些小问题,但是很喜欢这门课程。
——郑蕊作为一门编程语言,其简易程度超过了大多数的计算机高级语言,作为一名计算机专业的学MATLAB生,我深深感受到了这门语言的简洁与方便,语法和自然语言更为贴近,简便易学,功能强大,能够用其所以感觉作为我们的计算的工具,MATLAB而且我们的数值计算就是用进行绝大多少的数学计算与绘图。
等多种主流编程语言程序运行,兼容性很好。
用它进行java这门课程多我的帮助很大,而且可以将其接入数值分析计算,大大的方便了我们的任务的进行。
的许多基础入门知识,我以后继续学习熟练使总之,通过这学期为数不多的学习,我掌握了MA TLAB用它进行问题分析解决打下了良好的基础。
俗话说,万事开头难,感谢这门课称帮助我踏入数学问题分析计算的新高度。
——周其飞这门课时,我的内心是疑惑的,数学,还能有什么实验?在进入课堂之后才感”“数学实验刚开始看到受到这门课深重的意义。
与数学实验有了一个全新的认识,其次是对matlabmatlab通过实验使我学习掌握了许多知识。
首先是对的处理能力有了一个更高的飞跃尤的更多操作和命令的使用有了更好的掌握,最重要的事对matlabmatlab 其是对相关函数的使用及相关问题的处理。
9matlabmatlab功能强大而又简单容易上手,通过短短几周的学习我们便掌握了它的基本操作及命令。
利用的绘图功能更是将原本抽进行矩阵和数组的运算使得原本复杂的矩阵运算化身为几行代码,而利用matlab在求导、积分方面也颇有功用。
数学matlab象的复杂函数图像显现出来并自主加以修饰,让人一目了然。
软件处理数学问题,将我matlab本身是一门科学,其目的不是在于计算,而在于深入的探索与发现。
利用带给我的影响远不止于此,matlab们从枯燥复杂的计算工作中解放出来,大大提高了我们实验研究的效率。
将成为一个必备的工具。
在接下来的学习中的每一门课,matlab ——赵冠晨【参考文献】:(1)《Optimal State Estimation》,作者:Dan Simon(2) 《卡尔曼滤波与组合导航原理》,作者:秦永元(3) 《数值计算方法》,主编:颜兵兵10。