资源描述:
《卡尔曼滤波实验报告.doc》由会员上传分享,免费在线阅读,更多相关内容在教育资源-天天文库。
1、实验:卡尔曼滤波实现实验报告姓名:学号:日期:(以下内容用五号字书写,本页空白不够可续页)一、实验理论及程序卡尔曼滤波是一种递推的在最小均方误差下求得的一步预测估计,估计结果对真实值是收敛的,具体可分为滤波、平滑和预测三种。对一离散时间线性动态系统,若其状态方程满足:X(k+1)=Φ(k)X(k)+Γ(k)u(k)+G(k)V(k)其中X(k)为n维向量,表示k时刻的状态向量,Φ(k)为k时刻n*n阶的状态转移矩阵,u(k)为已知p维输入或控制信号,Γ(k)为n*p阶输入矩阵,G(k)为n*n维过程噪声分布矩阵,V(k)为n维过程噪声,为高斯白噪声,
2、且满足E[V(k)]=0,E[V(k)V(k)T]=Q(k)dkj,其中dkj为狄利克雷函数。测量方程满足:Z(k)=H(k)X(k)+W(k)其中Z(k)为m为向量,表示k时刻的测量向量,H(k)为m*n阶测量矩阵,W(k)是m维测量噪声,为高斯白噪声,且E[W(k)]=0,E[W(k)W(k)T]=R(k)dkj。设k时刻的滤波值为:,对应的协方差矩阵为:滤波过程可表示如下:(1)求出状态的一步预测和协方差的一步预测,分别为:(2)求出量测的预测值与量测预测协方差:(3)新增加量测Z(k+1),计算信息与增益:(1)则状态更新方程为:协方差更新方
3、程为:Matlab程序如下:clearclccloseallN=200;w=randn(2,N);x=zeros(2,N);x(:,1)=[1;1];a=[1.10;01.02];fork=2:N;x(:,k)=a*x(:,k-1)+w(k-1);endV=randn(2,N);Rvv=cov(V');Rww=cov(w');c=[10;00.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)=[00;00];s(:,1)=[
4、4;8];fort=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
5、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
6、(:,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);%更新当前状态估计值的协方差endt=1:N;plot(s(1,:),s(2,:),'ro',Y(1,:),Y(2,:),'g.',x(1,:),x(2,:),'b*');xlabel('time');ylabel('Amplitude');title('KalmanFilter')legend('kalman滤波估计值','测量值','真实值',4)gridon二、实验
7、过程(1)分析卡尔曼滤波算法原理,总结卡尔曼滤波算法流程(2)在第一步的基础上编写matlab程序(3)设计状态方程及测量方程,确定初值进行滤波。实验过程中遇到的问题:(a)矩阵的维数没有对应好,matlab报错,在搞清楚各个变量的物理意义并进行公示推算后终于调整好了所有的矩阵及向量维数;(b)维数调整好后程序可以运行,但结果很不稳定,滤波值也没能很好地跟踪真实值,期初以为是状态转移矩阵与测量矩阵选取的问题,后来发现是在计算协方差是少求了转置;(c)应注意状态转移矩阵与测量矩阵的选取,不然不容易观察滤波结果。三、实验分析上图中蓝色星号代表状态真实值,
8、绿色圆点代表测量值,红色圆圈代表卡尔曼滤波结果,卡尔曼滤波初值选择的偏差很大,但从实验结果可以看出随后的滤波值可以很好地跟踪了真实值。四、实验结论线性卡尔曼滤波即便在初值选择偏差很大的情况下也可以及时准确地跟踪线性系统的状态真实值。指导教师评语指导老师签名:年月日学号姓名成绩题目##姓名:学号:日期:(以下内容用五号字书写,本页空白不够可续页)一、摘要…………………………………二、引言三、研究内容及分析四、结论