Kalman滤波器参数
结合自己平时处理的数据,简单分析下kalman滤波器中参数对于滤波效果的影响。
Kalman滤波参数影响总结
Predict中给出的方程:
其中Pz,vz,bz分别代表z轴方向的位置、速度和加速度;u为输入,r为扰动,Q为过程噪声;
由于在kalman滤波中应用的都是x(k)=A*x(k-1)+B*u(k-1)+Q;此处求解的为下一时刻的状态量。由于上面公式求解的为状态的导数。故转化为:
系统的kalman的simulink图为
其中x(k)=x(k-1)+dx*delta_t 其中delta_t是由.m文件中程序设定累加的时间间隔,x(k)-->x(k-1)是由MATLAB的延迟模块1/z获得。Delta_t决定了采样的时间点的选取,越小说明采样越密集,精确度越高;1/Z模块是根据当前状态延迟一个时刻,得到前一个状态。状态中两者相互影响。
[u+r]为加速度和扰动的输入,即系统的可靠性。这里的加速度u=0,扰动r为白噪声,在.m文件中输入。
方差P的计算同上。
观测信号为常数为10,加上均值为0,方差为1的离散高斯噪声。
仿真结果:
t=t*dt;dt=0.1; 画出的图形采样点缩小了10倍;
a:
过程噪声:Q取值越小越好,不能过小,容易发散。Q1=diag[0.5^2 0.2^2 0.3^2]
Q的比较图如下:
Q=0.01*Q1 随着Q的增加,越发散,如下图:
Q=0.01*Q1;由图可以看出,过程噪声越小,越收敛。当Q<0.01*Q1时,收敛改善的空间比较小。
最佳状态选取Q=0.01*Q1;
Q值越小,收敛越强;随着时间点的增长,Q过于小,完全发散,如下图
b: P0:方差的初始值,值越大,刚开始收敛越慢,越震荡;选取合适的P0,使得初始时刻避免震荡。
结合下图,P0的最佳选择为:P0=0;
c: R 为测量噪声,R<1 容易震荡,R=6 系统比较稳定,R增加,效果改变不明显。(为了便于观察,图中选取1000个点)。
R的最佳取值在5附近,增加过多,效果不明显。如下图:
d: delta_t 的选择:
delta_t决定系统的采样时间,x(k)=x(k-1)+x(k-1)*delta_t; delta_t的选取值越小,计算越精确。
e: 系统的最佳状态:R=5;Q=0.01*Q1;P0=0;如下图
选取一段观察:
如图可以看出,选取适当的P0,R, Q ,使得经过kalman滤波输出的值接近于真实值,并且不发散。本系统选取P0=0,R=5,Q=0.01*diag(0.5^2 0.2^2 0.3^2); delta-t=0.0001;
总结:
过程噪声:Q取值越小越好,不能过小,容易发散。此处选取Q=0.001;
P0:方差的初始值,值越大,刚开始收敛越慢,越震荡;选取合适的P0,使得初始时刻避免震荡。选取P0=0;
R 为测量噪声,R<1 容易震荡,R=6 系统比较稳定,R增加,效果改变不明显。此处选取R=6;