当前位置:网站首页>【GNSS】抗差估计(稳健估计)原理及程序实现
【GNSS】抗差估计(稳健估计)原理及程序实现
2022-07-06 09:18:00 【Proletarians】
抗差估计
抗差估计的原理
抗差估计是近代测量平差范畴,又名稳健估计(robust estimate),据杨院士说中科院系统喜欢称之为抗差估计,武大喜欢称之为稳健估计。我们的测量值是随机变量,符合正态分布的,如果出现粗差(gross error)的话,我们在应用最小二差或卡尔曼滤波的时候就会使结果偏离真实值(滤波发散)的现象。我们解决粗差或系统误差的时候,可以从两方面去理解,均值漂移或者方差膨胀,抗差估计属于方差膨胀模型,即均值不变,方差变化的现象。我们可以通过对出现粗差的观测值进行降权处理。
我比较懒,不想打公式,大家应该也看过类似的推导,其实公式跟最小二差一样的,变化的地方就是权阵,换成了等价权,那么影响等价权的又是等价权函数,常见的有huber、IGG III等,我推荐IGG III,代码好实现。
我们在实现的时候,这个权阵很重要,权阵也就是我们说的方差阵的逆,分为独立和非独立,即观测值之间是否相关,是否相关也影响着等价权函数的形式。举一个最简单的独立观测距离的例子吧
抗差估计的例子
我们假设对一段距离进行10次独立观测,10个观测值分别为:5.09、5.10、5.13、5.09、5.12、5.08、5.46、7.81、5.10、5.11(单位为m),数据是我随便编的。
从上面这段描述,我们可以知道测量个数n=10,必要观测m=1,多余观测为n-m=9。独立观测那么权阵就是对角线,先验权矩阵为单位对角阵。而且肉眼可见的是7.81这个观测值是粗差,5.46嘛不确定是不是。
抗差程序实现
matlab实现的
%% 功能3-抗差估计
% % 假设对一段长度进行观测,5.09 5.10 5.13 5.09 5.12 5.08 5.46 7.81 5.10 5.11
close all
clear all
clc
k0=1.0;k1=2.5;k=1.0;
B=ones(10,1);% 设计矩阵
l=[5.09 5.10 5.13 5.09 5.12 5.08 6.46 7.81 5.10 5.11]';
% P=diag(ones(10,1));% 先验权矩阵1,等价权
P=diag(1./l);% 先验权矩阵2,根据长度倒数定权
x_prev=0;
x0=5.10;% 赋初值
l=l-x0;
while(1)
W=B'*P*l;
N=B'*P*B;
x=inv(N)*W;% 待估参数向量
v=B*x-l;% 残差向量
sigma0=sqrt(v'*P*v/(10-1));% 单位权中误差
disp(['待估参数向量:',num2str(x),' 单位权中误差:',num2str(sigma0)]);
Q=inv(P);
Qvv=Q-B*inv(N)*B';
for i=1:10
v_=v(i)/(sigma0*sqrt(Qvv(i,i)));
if abs(v_)<=k0
k=1.0;
elseif abs(v_)>k1
k=1e-8;
else
k=(k0/abs(v_))*((k1-abs(v_))/(k1-k0))^2;
end
P(i,i)=P(i,i)*k;
end
if x_prev==0
x_prev=x;
continue;
elseif abs(x_prev-x)<0.01
break;
end
x_prev=x;
end
x=x0+x_prev;%求出的最后长度 初值+改正数
disp(['length is ',num2str(x)])
打印结果如下:
使用等价权结果是:
待估参数向量:0.309 单位权中误差:0.8512
待估参数向量:0.042222 单位权中误差:0.11331
待估参数向量:0.0025 单位权中误差:0.01472
待估参数向量:-0.00031553 单位权中误差:0.0084525
length is 5.1025
使用长度倒数定权结果是:
待估参数向量:0.2218 单位权中误差:0.31128
待估参数向量:0.03985 单位权中误差:0.048702
待估参数向量:0.0024523 单位权中误差:0.0065128
待估参数向量:-0.0003396 单位权中误差:0.0037381
length is 5.1025
图中第一行就是我们最小二乘的结果,10个结果中只有一个结果与最小二乘得出的值接近,很明显与我们测量的结果是不一致的,所以说有一个粗差存在就会对最小二乘的结果产生毁灭性。那么如果我们应用抗差估计的话,再经过3次迭代就得出了最后的结果和单位权中误差。
如果我对第七个值,做修改,即由5.46变成6.46。结果如下所示:
使用单位权结果是:
待估参数向量:0.409 单位权中误差:0.91426
待估参数向量:0.1257 单位权中误差:0.38585
待估参数向量:0.0025 单位权中误差:0.01472
待估参数向量:-0.00031551 单位权中误差:0.0084526
length is 5.1025
使用长度倒数定权结果是:
待估参数向量:0.2218 单位权中误差:0.31128
待估参数向量:0.03985 单位权中误差:0.048702
待估参数向量:0.0024523 单位权中误差:0.0065128
待估参数向量:-0.0003396 单位权中误差:0.0037381
length is 5.1025
结论
使用抗差估计确定提高了参数估值的准确性,另外不同的先验权矩阵在迭代过程中结果是不一致,对于本例中使用长度倒数来定权,无论是否应用最小二差,其结果都与真实值接近,单位权中误差也较小。
观测值相关的抗差估计
主要就是这三步迭代:
1、标准化残差,单位权中误差
2、方差放大因子
3、等价方差
欢迎交流啊~
更新于2020/11/10 14:20:00
在上述例子中,要使用标准化残差,此处感谢中测院的肖同学提醒,很久没看经典平差了,协方差阵传播公式还真忘记了,哈哈哈。
扩展:其实我们在gnss spp中,观测值之间也是不相关的,所以懂了吧,找到对应参数直接套用就行了。
边栏推荐
- Acwing-116 pilot brother
- (the first set of course design) sub task 1-5 317 (100 points) (dijkstra: heavy edge self loop)
- Devops' future: six trends in 2022 and beyond
- Agile development helps me
- Fabrication of fairygui simple Backpack
- GNSS定位精度指标计算
- Fairygui joystick
- [Leetcode15]三数之和
- JS Title: input array, exchange the largest with the first element, exchange the smallest with the last element, and output array.
- KF UD分解之伪代码实现进阶篇【2】
猜你喜欢

Halcon knowledge: gray_ Tophat transform and bottom cap transform

Unity3D基础入门之粒子系统(属性介绍+火焰粒子系统案例制作)

Prove the time complexity of heap sorting

Conditional probability

NovAtel 板卡OEM617D配置步骤记录

Teach you to release a DeNO module hand in hand

第一人称视角的角色移动

ORA-02030: can only select from fixed tables/views

(1) Introduction Guide to R language - the first step of data analysis

Problèmes avec MySQL time, fuseau horaire, remplissage automatique 0
随机推荐
PT OSC deadlock analysis
NovAtel 板卡OEM617D配置步骤记录
Knowledge summary of request
PR 2021 quick start tutorial, first understanding the Premiere Pro working interface
Talking about the startup of Oracle Database
Postman 中级使用教程【环境变量、测试脚本、断言、接口文档等】
FairyGUI增益BUFF數值改變的顯示
(课设第一套)1-5 317号子任务 (100 分)(Dijkstra:重边自环)
Unity3D基础入门之粒子系统(属性介绍+火焰粒子系统案例制作)
Halcon knowledge: gray_ Tophat transform and bottom cap transform
GNSS定位精度指标计算
CUDA C programming authoritative guide Grossman Chapter 4 global memory
FairyGUI人物状态弹窗
程序设计大作业:教务管理系统(C语言)
Database table splitting strategy
[offer78] merge multiple ordered linked lists
KF UD分解之伪代码实现进阶篇【2】
[leetcode19] delete the penultimate node in the linked list
Remember an experience of ECS being blown up by passwords - closing a small black house, changing passwords, and changing ports
Solution to the problem of automatic login in Yanshan University Campus Network