导航领域常用统计量RMS,CEP,Sigma

在GNSS产品中厂家提供这么几个精度参数:CEP、RMS,下面将详细介绍一下这几个精度参数的意义: CEP和RMS是GNSS的定位精度单位,也是个概率单位。就拿5M CEP说吧,意思是以5M为半径画圆,有50%的点能打在圆内,也就是说,GNSS定位在5M精度的概率是50%,相应的RMS(66.7%)2DRMS(95%)当然很多商家愿意给出CEP,因为单位大了,前面的数就小了,好看。 水平精度以圆概率误差(CEP) 意味着 50% 的结果在给出的圆直径内,50%的结果在圆外。

RMS是1 sigma或1倍标准差,如果结果是无偏的,概率为67%。 2dRMS是2 sigma或2倍标准差,概率为95%。 他们的相互转换可以按照下面的规则: CEP 乘以1.2能转换为RMS,CEP 乘以2.4能转换为2d RMS。

好的,下面是实现的步骤: 1.读取NMEA文件 使用Python的文件读取功能,读取两个NMEA文件中的位置信息,保存为经度和纬度的列表。 2.计算两个位置之间的距离 使用Python的geopy库中的`geodesic`函数,计算两个位置之间的距离,保存为距离的列表。 3.计算RMS 使用NumPy库中的`mean`和`square`函数,计算距离列表的平均值的平方根,即为RMS。 4.计算CEP95 使用NumPy库中的`percentile`函数,计算距离列表的95百分位数,即为CEP95。 5.具体实现 以下是具体的代码实现: ```python import numpy as np from geopy.distance import geodesic def read_nmea(file_path): with open(file_path, 'r') as f: data = f.readlines() nmea_data = [] for line in data: if line.startswith('$GPGGA'): nmea_data.append(line.split(',')) return nmea_data def calculate_accuracy(file_path1, file_path2): nmea_data1 = read_nmea(file_path1) nmea_data2 = read_nmea(file_path2) positions1 = [(float(d[2]), float(d[4])) for d in nmea_data1] # 获取NMEA文件1中的经纬度信息 positions2 = [(float(d[2]), float(d[4])) for d in nmea_data2] # 获取NMEA文件2中的经纬度信息 distances = [] for i in range(min(len(positions1), len(positions2))): distances.append(geodesic(positions1[i], positions2[i]).meters) # 计算两个点之间的距离 rms = np.sqrt(np.mean(np.square(distances))) # 计算RMS cep95 = np.percentile(distances, 95) # 计算CEP95 return rms, cep95 ``` 上面的代码中,`read_nmea`方法用于读取NMEA文件中的数据,`calculate_accuracy`方法用于计算两个位置之间的距离、RMSCEP95。 最后,调用`calculate_accuracy`方法即可计算两个NMEA文件的水平精度误差RMSCEP95。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值