当前位置:网站首页>【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中,观测值之间也是不相关的,所以懂了吧,找到对应参数直接套用就行了。
边栏推荐
- Naive Bayesian theory derivation
- Lock wait timeout exceeded try restarting transaction
- Expected value (EV)
- (5) Introduction to R language bioinformatics -- ORF and sequence analysis
- JS Title: input array, exchange the largest with the first element, exchange the smallest with the last element, and output array.
- [leetcode19] delete the penultimate node in the linked list
- [Offer29] 排序的循环链表
- 地球围绕太阳转
- (4) Data visualization of R language -- matrix chart, histogram, pie chart, scatter chart, linear regression and strip chart
- (课设第一套)1-5 317号子任务 (100 分)(Dijkstra:重边自环)
猜你喜欢

FairyGUI按钮动效的混用

Fairygui loop list

Naive Bayesian theory derivation

Prove the time complexity of heap sorting

Affichage du changement de valeur du Buff de gain de l'interface graphique de défaillance

CUDA C programming authoritative guide Grossman Chapter 4 global memory

Guided package method in idea

SVN更新后不出现红色感叹号

Whistle+switchyomega configure web proxy

Matlab读取GNSS 观测值o文件代码示例
随机推荐
dosbox第一次使用
There is no red exclamation mark after SVN update
It has been solved by personal practice: MySQL row size too large (> 8126) Changing some columns to TEXT or BLOB or using ROW_ FORMAT
FGUI工程打包发布&导入Unity&将UI显示出来的方式
Redis based distributed ID generator
Lock wait timeout exceeded try restarting transaction
(三)R语言的生物信息学入门——Function, data.frame, 简单DNA读取与分析
Introduction to the daily practice column of the Blue Bridge Cup
编译原理:源程序的预处理及词法分析程序的设计与实现(含代码)
单片机蓝牙无线烧录
PT OSC deadlock analysis
FairyGUI条子家族(滚动条,滑动条,进度条)
MySQL time, time zone, auto fill 0
Unity3D摄像机,键盘控制前后左右上下移动,鼠标控制旋转、放缩
燕山大学校园网自动登录问题解决方案
Vulnhub target: hacknos_ PLAYER V1.1
Design and implementation of general interface open platform - (39) simple and crude implementation of API services
(课设第一套)1-5 317号子任务 (100 分)(Dijkstra:重边自环)
Unity3d camera, the keyboard controls the front and rear left and right up and down movement, and the mouse controls the rotation, zoom in and out
程序设计大作业:教务管理系统(C语言)