关于工具箱
kfplot是图像绘制的函数,用于绘制关于滤波(前/后)的误差图像。
本文所述的代码需要基于PSINS工具箱,工具箱的讲解:
使用方法
函数形式为:
k f p l o t ( x k p k , v a r a r g i n ) kfplot(xkpk, varargin) kfplot(xkpk,varargin)
其中xkpk为卡尔曼滤波的时候生成的滤波值、协方差对角线的数据等值。
剩余的变量为相关误差。
例程实践
运行代码
运行经典的例程test_SINS_GPS_153,最后两张图即为函数kfplot绘制的。
使用的代码为:
k f p l o t ( x k p k , a v p e r r , i m u e r r ) ; kfplot(xkpk, avperr, imuerr); kfplot(xkpk,avperr,imuerr);
其中:
- avperr为滤波后的avp误差
- imuerr为imu的误差
运行结果
-
第一张,绘制滤波后的avp误差时序图:
-
第二张,绘制滤波后的avp对应的状态标准差:
源代码
function kfplot(xkpk, varargin)
global glv
global psinsdef
if nargin>1 % kfplot(xk, pk, clm)
if psinsdef.kfplot==0
feval(psinsdef.typestr, psinsdef.kfplottag, [{
xkpk},varargin]);
return;
end
if size(xkpk,2)==size(varargin{
1},2)
if nargin==3, clm=varargin{
2}; else, clm=1:psinsdef.kfplot; end;
if length(clm)==1, clm=1:clm; end
kfplot([xkpk(:,clm),varargin{
1}(:,[clm,end])]);
return;
end
end
switch psinsdef.kfplot
case {
15,16,18,19} % psinsdef.kfplotxx
inserrplot(xkpk(:,[1:psinsdef.kfplot,end]));
if nargin>1
if psinsdef.kfplot==15
trueplot15(varargin);
elseif psinsdef.kfplot==18
trueplot18(varargin);
elseif psinsdef.kfplot==19
trueplot19(varargin);
elseif psinsdef.kfplot==34
end
end
inserrplot([sqrt(xkpk(:,psinsdef.kfplot+1:end-1)),xkpk(