文章目录

  • 线性插值
  • 四点双线性插值
  • 三点插值
  • 还有一步

点击这里可以阅读rtklib中的SBAS相关实现解读,其中使用SBAS进行电离层修正时,首先要计算电离层切入点。但是有一个问题,SBAS不可能下发电离层上无限个点的修正信息,而是一个一个的特征点,这样整个电离层球面就会被分成一个个的网格区域。正因如此,电离层切入点的修正值需要使用插值获取。

线性插值

在正式开始我们的插值工作之前,有必要花费半分钟的时间熟悉一下线性插值。如下图,我们如果知道两个点的坐标(x1,y1)(x_1,y_1)(x1​,y1​)和(x0,y0)(x_0,y_0)(x0​,y0​),那么我们就可以通过线性插值计算出横坐标xxx对应的yyy值。

y=x1−xx1−x0y0+x−x0x1−x0y1=αy0+βy1y=\frac{x_1-x}{x_1-x_0}y_0+\frac{x-x_0}{x_1-x_0}y_1=\alpha y_0+\beta y_1 y=x1​−x0​x1​−x​y0​+x1​−x0​x−x0​​y1​=αy0​+βy1​
其中 α+β=1\alpha+\beta=1α+β=1

四点双线性插值

在低纬度地区,我们算出的电离层切入点会位于一个近似于正方形的网格中,如下图。

此时我们已知四个顶点的电离层延迟,要计算切入点的电离层延迟就需要使用双线性插值的方法。

首先沿x方向插值出f(x,y1)f(x,y_1)f(x,y1​)和f(x,y2)f(x,y_2)f(x,y2​)连个中间点,插值方法采用上边的线性插值,结果如下
f(x,y1)=x2−xx2−x1Q11+x−x1x2−x1Q21=αxQ11+βxQ21f(x,y_1)=\frac{x_2-x}{x_2-x_1}Q_{11}+\frac{x-x_1}{x_2-x_1}Q_{21}=\alpha_{x} Q_{11}+\beta_{x} Q_{21} f(x,y1​)=x2​−x1​x2​−x​Q11​+x2​−x1​x−x1​​Q21​=αx​Q11​+βx​Q21​

f(x,y2)=x2−xx2−x1Q12+x−x1x2−x1Q22=αxQ12+βxQ22f(x,y_2)=\frac{x_2-x}{x_2-x_1}Q_{12}+\frac{x-x_1}{x_2-x_1}Q_{22}=\alpha_{x} Q_{12}+\beta_{x} Q_{22} f(x,y2​)=x2​−x1​x2​−x​Q12​+x2​−x1​x−x1​​Q22​=αx​Q12​+βx​Q22​
现在通过(x,f(x,y1))(x,f(x,y_1))(x,f(x,y1​))和x,f(x(x,y2))x,f(x(x,y_2))x,f(x(x,y2​))同样适用线性插值的方法,插值出f(x,y)f(x,y)f(x,y)
f(x,y)=y2−yy2−y1f(x,y1)+y−y1y2−y1f(x,y2)=αyf(x,y1)+βyf(x,y2)f(x,y)=\frac{y_2-y}{y_2-y_1}f(x,y_1)+\frac{y-y_1}{y_2-y_1}f(x,y_2)=\alpha_{y} f(x,y_1)+\beta_{y} f(x,y_2) f(x,y)=y2​−y1​y2​−y​f(x,y1​)+y2​−y1​y−y1​​f(x,y2​)=αy​f(x,y1​)+βy​f(x,y2​)
f(x,y)=[αxβx][Q11Q12Q21Q22][αyβy]f(x,y)=\begin{bmatrix} \alpha_x & \beta_x \end{bmatrix} \begin{bmatrix} Q_{11} & Q_{12} \\ Q_{21} & Q_{22} \end{bmatrix} \begin{bmatrix} \alpha_y\\ \beta_y \end{bmatrix} f(x,y)=[αx​​βx​​][Q11​Q21​​Q12​Q22​​][αy​βy​​]
如果网格是正方形的,经过单位化,那么双线性插值的算法简化为下边的样子,
f(x,y)=[1−xx][Q11Q12Q21Q22][1−yy]f(x,y)=\begin{bmatrix} 1-x & x \end{bmatrix} \begin{bmatrix} Q_{11} & Q_{12} \\ Q_{21} & Q_{22} \end{bmatrix} \begin{bmatrix} 1-y\\ y \end{bmatrix} f(x,y)=[1−x​x​][Q11​Q21​​Q12​Q22​​][1−yy​]
下边这两行没有删掉的代码就是单位化的一种体现,

static void searchigp(gtime_t time, const double *pos, const sbsion_t *ion,const sbsigp_t **igp, double *x, double *y)
{*x=(lon-lonp[0])/5.0;*y=(lat-latp[0])/5.0;
}

最终求出的四个点的权值和我们的推导是一致的,

extern int sbsioncorr(gtime_t time, const nav_t *nav, const double *pos,const double *azel, double *delay, double *var)
{/* weight of igps */if (igp[0]&&igp[1]&&igp[2]&&igp[3]) {w[0]=(1.0-x)*(1.0-y); w[1]=(1.0-x)*y; w[2]=x*(1.0-y); w[3]=x*y;}

三点插值

在高纬度地区我们面临的是以下局面。

这时我们就要用三个顶点进行插值,对于三点插值我们采用重心法。

同样,经过代码处理,三角形可退化为等腰直角三角形。三角形的重心坐标与三个子三角形的面积成正比。由于等腰直角三角形的特殊性,那么这个比例又可以退化为切入点到两条直角边的距离。

最后一个三角形的面积(最后一个点的权值)我们是不用计算的,因为三个点的权值之和为1.只需要用1减去已知的两个权值就可以了。

这个等腰直角三角形分为以下四种情况。从第一张图,我们可以看出,w3=xw_3=xw3​=x,w0=1−yw_0=1-yw0​=1−y,w1=1−w0−w3w_1=1-w_0-w_3w1​=1−w0​−w3​

同样,如果是下图这种情况,w1=1−xw_1=1-xw1​=1−x,w2=1−yw_2=1-yw2​=1−y,w3=1−w1−w2w_3=1-w_1-w_2w3​=1−w1​−w2​


如果是下图这种情况,w1=yw_1=yw1​=y,w2=xw_2=xw2​=x,w0=1−w1−w2w_0=1-w_1-w_2w0​=1−w1​−w2​

最后是下图这种情况,w0=1−xw_0=1-xw0​=1−x,w3=yw_3=yw3​=y,w2=1−w1−w3w_2=1-w_1-w_3w2​=1−w1​−w3​

以下是rtklib中三点插值的处理,和我们推导的结果是一致的。

    else if (igp[0]&&igp[1]&&igp[2]) {w[1]=y; w[2]=x;if ((w[0]=1.0-w[1]-w[2])<0.0) err=1;}else if (igp[0]&&igp[2]&&igp[3]) {w[0]=1.0-x; w[3]=y;if ((w[2]=1.0-w[0]-w[3])<0.0) err=1;}else if (igp[0]&&igp[1]&&igp[3]) {w[0]=1.0-y; w[3]=x;if ((w[1]=1.0-w[0]-w[3])<0.0) err=1;}else if (igp[1]&&igp[2]&&igp[3]) {w[1]=1.0-x; w[2]=1.0-y;if ((w[3]=1.0-w[1]-w[2])<0.0) err=1;}

还有一步

另外,我们发现无论是电离层修正结果还是修正方差,都是要考虑因子fpfpfp的,这又是什么鬼?

*delay*=fp; *var*=fp*fp;

首先,下边是这个参数的计算方法,
Fp=[1−(RecosERe+hI)2]−12F_p=[1-(\frac{R_ecosE}{R_e+h_I})^2]^{-\frac{1}{2}} Fp​=[1−(Re​+hI​Re​cosE​)2]−21​
其中EEE是卫星仰角,ReR_eRe​ 为地球半径,hIh_IhI​电离层高度,取350Km.

看出来了吧,延迟修正不仅与电离层切入点的位置有关,还与卫星仰角有关。仰角越小FpF_pFp​越大,这是应为仰角越小穿过电力层的距离也就越长。

SBAS 电离层修正中的双线性插值方法相关推荐

  1. 在PyTorch中进行双线性采样:原理和代码详解

    ↑ 点击蓝字 关注视学算法 作者丨土豆@知乎 来源丨https://zhuanlan.zhihu.com/p/257958558 编辑丨极市平台 在pytorch中的双线性采样(Bilinear Sa ...

  2. gis差值分析_arcgis中七种插值方法的对比分析

    1 地形转栅格工具属于一种插值方法,专门用于创建符合真实地表的数字高程模型 (DEM).该方法基于由 Michael Hutchinson(1988.1989.1996.2000.2011)开发的 A ...

  3. 【运动规划算法项目实战】路径规划中常用的插值方法(附ROS C++代码)

    文章目录 简介 一.线性插值 代码实现 二.三次样条插值 三.B样条插值 四.贝塞尔曲线插值 总结 简介 常见用于处理路径平滑的插值算法主要包括线性插值.三次样条插值.B样条插值和贝塞尔曲线插值等,下 ...

  4. Matlab中interp1不同插值方法效果对比

    方法描述(matlab 2016a): Vq = interp1(X,V,Xq,METHOD) specifies the interpolation method.     The availabl ...

  5. 《数字图像处理(第三版)》 第二章 数字图像基础 笔记3(图像取样和量化)

    2.4 图像取样和量化   无论是哪种获取图像的方法,我们的目的都是从感知的数据生成数字图像.多数传感器的输出是连续的电压波形,这些波形的幅度和空间特性都与感知的物理现象有关.为了产生一幅数字图像,我 ...

  6. 双线性池化_卷积神经网络中的各种池化操作

    池化操作(Pooling)是CNN中非常常见的一种操作,Pooling层是模仿人的视觉系统对数据进行降维,池化操作通常也叫做子采样(Subsampling)或降采样(Downsampling),在构建 ...

  7. 使用PS中的GCP点应用于SBAS轨道精炼

    使用PS中的GCP点应用于SBAS轨道精炼 在SBAS处理过程中,进行"轨道精炼和重去平"时候,需要选择 一些GCP进行轨道精炼,GCP的选择有一些要求,如选择在没有残余地形条纹上 ...

  8. (一)GNSS定位中的电离层延迟估计

    写在前面: 今天开一个板块记录一下自己在GNSS定位(PPP,PPP-RTK)方面的学习过程和心得想法.因为之前是做电离层预报,从大三开始接触算起也两年有余了,或多或少有一些成果.后面想学习一下精密单 ...

  9. 3D图像重建中的颜色预测误差研究

    目录 整体思路: 1.本课题的目的.意义 1. 描述图像 2. 标注图像 3.CNN 3D图像重建中的颜色预测误差研究 摘 要 1 绪 论 1.1背景与意义 1.2 课题研究内容 1.3 3D重建国内 ...

最新文章

  1. Eclipse使用技巧收集
  2. 马踏棋盘算法(骑士周游)
  3. 数据库高级知识——mysql架构介绍(二)
  4. php 怎么解析文本,PHP解析自定义纯文本数据库
  5. 必背单词_初中英语:2000个必背单词(附音标)汇总,打印背完,3年考高分
  6. egg前面加什么,egg前加a还是an?
  7. HDU 5273 Dylans loves sequence【 树状数组 】
  8. 饿了么移动 APP 的架构演进
  9. 凯恩帝绝对坐标清零_凯恩帝系统加工件数自动清零怎么设置
  10. switch可以用什么手柄_steam设置switch手柄的步骤_Steam平台可以用switch良值pro手柄吗_怎么设置_9号资讯...
  11. 恶意程序- 安全建议
  12. API的小结===一定要看
  13. 七大排序算法,冒泡排序 选择排序 插入排序 希尔排序 堆排序 快速排序 归并排序的深度讲解
  14. norms matlab
  15. 几何分布的期望和方差公式推导_算法数学基础-统计学最基础之均值、方差、协方差、矩...
  16. java 中查询余额怎么写_查询余额示例代码
  17. 高通开发系列 - network之移动网络拨号失败和netmgrd服务分析
  18. 数字经济时代,数据中心供电系统如何助力实现双碳目标
  19. 集合和元组的增删,修改,查找,拼接
  20. 观点丨李飞飞:我们怎么教计算机理解图片

热门文章

  1. 华为C8812E打开log日志功能
  2. 年终总结:2009年管理软件市场盘点(上)
  3. 6-1 *显示汉字点阵图形(标准版) (15 分)
  4. 罗斯蒙特3051酸碱盐浓度变送器产品简介及原理
  5. 逆向路径转发 linux,RPF(Reverse Path Forwarding 反向路径转发)技术
  6. 徐盛:软件测试新趋势从超人时代到智慧测试时代
  7. 4.4.5 信道均衡(二)
  8. 福州物联网开放实验室下月挂牌
  9. TMC2225电机驱动简介
  10. ffmpeg moov 前移命令