代码改变世界

电子陀螺仪的随机误差补偿---平稳性检验

2013-06-14 13:58  钱吉  阅读(1575)  评论(0编辑  收藏  举报

摘自《捷联惯导系统》第二讲:时间序列建模

  在惯性导航系统中,为了减小陀螺随机误差对系统精度的影响,有效可行的办法是采用滤波技术对随机误差进行实时补偿。实时补偿的前提是已知随机误差的模型,为此,需要事先对陀螺的随机噪声进行必要的数学处理,建立适合于在线补偿的数学模型。
陀螺的随机噪声一般是有色噪声,即非平稳的随机过程,处理这类随机过程较成熟的建模方法是时间序列分析法。该方法是针对一组离散随机数据序列,进行时域和频域内的统计特性分析,求出实际物理系统的统计特性,并将随机数据浓缩成一个简单的随机差分模型。

一:平稳性检验

逆序法:

对于测试数据记录y1,y2,...yn,将其分成M段,然后求各段的均值(或方差值),得到一个大致不相关的均值(或方差值)序列x1,x2,...xM。对于下标为i的xi,每当出现 xj>xi(j>i,i=1,2,...M-1)时就定义为xi的一个逆序,与xi相应的逆序的个数Ai称为xi的逆序数。序列x1,x2,...xM-1的逆序总数定义为

以随机整数序列出现的的均值与方差分别为:

统计量u服从近似的N(0,1)分布。u的表达式为:

平稳性的判断:如果值处在±2之内,则可接受序列无趋势的假设(在0.05显著水平上);否则拒绝该假设。 A很大时,表明序列均值(或方差)有上升趋势,很小时,表明序列均值(或方差)有下降趋势。

 

 

(1)为了验证逆序法的有效性,这里写了一段临时实验用的matlab代码:用正态分布序列实验

function main
clc;
clear;
serial = randn(10000,1);
R = GenInverseFunc(serial);
figure(1);
plot(serial);
figure(2);
plot(R);

Rmean = mean(R);
Rvar = var(R);
disp(['均值为:' num2str(Rmean) ' 方差为:' num2str(Rvar)]);


function R = GenInverseFunc(serial)
MinSectionNum = 10;
SerialLen = length(serial);
MaxSectionNum = floor(SerialLen/5);

MinLenPerSection = floor(SerialLen/MinSectionNum);
if MinLenPerSection<10
    msgbox('时间序列长度太小,无法准确分析');
    return;
end

for k=MinSectionNum:MaxSectionNum
    count = CalInverseOrderByMean(serial,k);%%%也可以用方差分析
    R(k) = (count+0.5-k*(k-1)/4)/sqrt(k*(2*k*k+3*k-5)/72);
end

function A = CalInverseOrderByMean(serial,k)
Section = cell(k,1);
len = floor(length(serial)/k);
for index = 1:k
  Section{index}=serial(1+(index-1)*len:index*len);
end
for index = 1:k
  SectionMean(index)=mean(Section{index});
end
a = zeros(k,k);
for i=1:k-1
  for j=i+1:k
      if SectionMean(j)<SectionMean(i);
          a(i,j)=1;
      end
  end
end
[A,an]=size(find(a==1));
  
function A = CalInverseOrderByVar(serial,k)
Section = cell(k,1);
len = floor(length(serial)/k);
for index = 1:k
  Section{index}=serial(1+(index-1)*len:index*len);
end
for index = 1:k
  SectionVar(index)=var(Section{index});
end
a = zeros(k,k);
for i=1:k-1
  for j=i+1:k
      if SectionVar(j)<SectionVar(i);
          a(i,j)=1;
      end
  end
end
[A,an]=size(find(a==1));

结果如下:

输入序列:

逆序列归一化:

均值方差:

均值为:-0.62828 方差为:0.10372

 

疑问:正态分布随机序列应该是平稳信号啊,为什么逆序法检验得到的归一化的逆序列不满足标准正态分布?

如果满足正态分布的话,下面的事情就是用假设检验去论证,在0.05的显著性水平下,u的置信度区间是不是[-2,2]?如果是,说明原序列为平稳信号序列,否则不是。