RTKLIB中质量控制函数之——testsnr()函数

 

RTKLIB中的随机模型用的是高度角模型,

可以针对不同高度角设置不同的信噪比阈值,对信噪比低于所设阈值的观测值进行剔除。

/* test SNR mask ---------------------------------------------------------------
* test SNR mask
* args   : int    base      I   rover or base-station (0:rover,1:base station)
*          int    idx       I   frequency index (0:L1,1:L2,2:L3,...)
*          double el        I   elevation angle (rad)
*          double snr       I   C/N0 (dBHz)
*          snrmask_t *mask  I   SNR mask
* return : status (1:masked,0:unmasked)
*-----------------------------------------------------------------------------*/
extern int testsnr(int base, int idx, double el, double snr,
                   const snrmask_t *mask)
{
    double minsnr,a;
    int i;
    /* mask->ena:为rover、base检测信噪比功能的开关;0:不检测信噪比,1:检测信噪比 */
    if (!mask->ena[base]||idx<0||idx>=NFREQ) return 0;
    
    a=(el*R2D+5.0)/10.0;  /* 将高度角分为10个区间:0-5、5-15、15-25、25-35、35-45、45-55、55-65、65-75、75-85、85-90 */
    i=(int)floor(a); 
  a-=i; if (i<1) minsnr=mask->mask[idx][0];  /* 高度角在0-5,直接按 设置的第一个阈值 */ else if (i>8) minsnr=mask->mask[idx][8]; /* 高度角在85-90,直接按最后一个阈值 */ else minsnr=(1.0-a)*mask->mask[idx][i-1]+a*mask->mask[idx][i]; /* 其他的高度角,需要相邻阈值拟合一下 */ return snr<minsnr; }

 

posted @ 2021-11-05 09:44  無常  阅读(734)  评论(0编辑  收藏  举报