EKF-PF-UKF仿真程序问题

丿风起 2018-04-02 09:24:48
最近在接触EKF-PF-UKF的一个仿真程序,x=linear*x+(25*x/(1+x^2))+8*cos(1.2*(k-1))+sqrt(Q)* randn;%状态值?????? y=(x^2/20)+sqrt(R)*randn;%观测值;这是其中两句语句,我不太明白这两句的作用,尤其是x=linear*x这种类型的语句代表什么,在后续程序中有很多这种结构的语句,麻烦有大神帮我解析一下,谢谢。

(以下是相关部分程序)
clear all;
clc;

%?tic;?
x=0.1;%?初始状态??
x_estimate=1;%状态的估计?
e_x_estimate=x_estimate;%EKF的初始估计
u_x_estimate=x_estimate;%UKF的初始估计
p_x_estimate=x_estimate;%PF的初始估计
Q=10;%input('请输入过程噪声方差Q的值:?');?%?过程状态协方差??
R=1;%input('请输入测量噪声方差R的值:?');?%?测量噪声协方差??
P=5;%初始估计方差?
e_P=P;%EKF方差?
u_P=P;%UKF方差?
pf_P=P;%PF方差?
tf=50;%模拟长度,时间步长
x_array=[x];%真实值数组?
e_x_estimate_array=[e_x_estimate];%EKF最优估计值数组?
u_x_estimate_array=[u_x_estimate];%UKF最优估计值数组?
p_x_estimate_array=[p_x_estimate];%PF最优估计值数组?
u_k=1;%微调参数?
u_symmetry_number=4;%?对称的点的个数?
u_total_number=2*u_symmetry_number+1;%总的采样点的个数?
linear=0.5;
N=500;%粒子滤波的粒子数?
close all;
%粒子滤波初始?N?个粒子
for i=1:N
p_xpart(i)=p_x_estimate+sqrt(pf_P)*randn;
end;
for k=1:tf %?模拟系统??
x=linear*x+(25*x/(1+x^2))+8*cos(1.2*(k-1))+sqrt(Q)* randn;%状态值??????
y=(x^2/20)+sqrt(R)*randn;%观测值?????????????
%扩展卡尔曼滤波器?????
%进行估计??第一阶段的估计?
e_x_estimate_1=linear*e_x_estimate+25*e_x_estimate/(1+e_x_estimate^2)+8*cos(1.2*(k-1));
e_y_estimate=(e_x_estimate_1)^2/20;%这是根据k=1时估计值为1得到的观测值;只是这个由我估计得到的??第24行的y也是观测值??不过是由加了噪声的真实值得到的?????
%相关矩阵?
e_A=linear+25*(1-e_x_estimate^2)/((1+e_x_estimate^2)^2);%传递矩阵?????
e_H=e_x_estimate_1/10;%观测矩阵?????%估计的误差?
e_p_estimate=e_A*e_P*e_A'+Q;%扩展卡尔曼增益?
e_K=e_p_estimate*e_H'/(e_H*e_p_estimate*e_H'+R);%进行估计值的更新??第二阶段?
e_x_estimate_2=e_x_estimate_1+e_K*(y-e_y_estimate);%更新后的估计值的误差?
e_p_estimate_update=e_p_estimate-e_K*e_H*e_p_estimate;
%进入下一次迭代的参数变化??????
e_P=e_p_estimate_update;
e_x_estimate=e_x_estimate_2;
...全文
251 回复 打赏 收藏 转发到动态 举报
写回复
用AI写文章
回复
切换为时间正序
请发表友善的回复…
发表回复

4,446

社区成员

发帖
与我相关
我的任务
社区描述
图形图像/机器视觉
社区管理员
  • 机器视觉
  • 迪菲赫尔曼
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧