博主githubhttps://github.com/MichaelBeechan

博主CSDNhttps://blog.csdn.net/u011344545

🎄🎄🎄🎄🎄🎄🎄🎄🎄🎄🎄🎄🎄🎄🎄🎄🎄🎄🎄🎄🎄🎄🎄🎄🎄🎄🎄🎄🎄🎄🎄

RAIM科普

🎄🎄🎄🎄🎄🎄🎄🎄🎄🎄🎄🎄🎄🎄🎄🎄🎄🎄🎄🎄🎄🎄🎄🎄🎄🎄🎄🎄🎄🎄🎄

        Q1:什么是RAIM呢?

        A:RAIM(Receiver Autonomous Integrity Monitoring)即接收机自主完好性监测,简单来说,就是北斗卫星导航接收机自己检查信号靠不靠谱,有问题能立马发现,不用等别人告诉它。

🌱🌱🌱🌱🌱🌱🌱🌱🌱🌱🌱🌱🌱🌱🌱🌱🌱🌱🌱🌱🌱🌱🌱🌱🌱🌱🌱🌱🌱🌱🌱

        Q2:它是怎么工作的? ‌

        A:星多力量大——北斗接收机需要至少5颗卫星才能工作,RAIM就利用这些卫星的冗余信息,自己算多组定位结果,互相比较。 ‌故障识别‌——如果某颗卫星被排除后定位结果明显变好,就说明这颗卫星可能有问题,接收机会自动把它标记为故障卫星。数学原理‌——通过分析测量值和预测值之间的差异(残差),如果差异太大,就触发告警。

🌿🌿🌿🌿🌿🌿🌿🌿🌿🌿🌿🌿🌿🌿🌿🌿🌿🌿🌿🌿🌿🌿🌿🌿🌿🌿🌿🌿🌿🌿🌿

        Q3:它和传统监测有啥不一样? ‌

        A:传统监测‌——依赖地面站,故障判定可能需要15分钟到2小时; ‌RAIM‌——接收机自己实时完成检测,特别适合航空、航海这些需要快速响应的领域。

☘️☘️☘️☘️☘️☘️☘️☘️☘️☘️☘️☘️☘️☘️☘️☘️☘️☘️☘️☘️☘️☘️☘️☘️☘️☘️☘️☘️☘️☘️☘️

        Q4:它用在哪儿? ‌

        A:航空‌——FAA规定所有航空用北斗/GPS接收机都必须有RAIM功能,在越洋和边远区域可以作为主用导航系统。 ‌航海‌——保障船舶在海上航行时的导航安全。

🍀🍀🍀🍀🍀🍀🍀🍀🍀🍀🍀🍀🍀🍀🍀🍀🍀🍀🍀🍀🍀🍀🍀🍀🍀🍀🍀🍀🍀🍀🍀

        Q5:它有什么限制? ‌

        A:依赖卫星数量‌——至少需要5颗卫星才能工作,6颗才能启用故障检测与排除(FDE)功能,在复杂环境(如城市峡谷、山区)中,卫星信号容易被遮挡,导致RAIM功能失效。 ‌不能诊断接收机自身故障‌——只能监测卫星信号异常,接收机自己出问题它管不了。传统方法依赖高斯噪声假设,多故障场景下检测效率显著下降。例如,同时出现两颗故障卫星时,传统RAIM算法可能无法准确识别。在多路径效应、电离层扰动等复杂环境下,传统RAIM算法存在漏检率高、适应性不足的问题。

🌴🌴🌴🌴🌴🌴🌴🌴🌴🌴🌴🌴🌴🌴🌴🌴🌴🌴🌴🌴🌴🌴🌴🌴🌴🌴🌴🌴🌴🌴🌴

        Q6:未来会怎样? ‌

        A:ARAIM‌——RAIM的升级版,结合地面监测站的支持,能支持更复杂的垂直导航性能。 ‌多星座支持‌——未来会支持更多卫星系统,比如GPS、BDS、Galileo等,提高全球可用性。

🥂 🥂 🥂 🥂 🥂 🥂 🥂 🥂 🥂 🥂 🥂 🥂 🥂 🥂 🥂 🥂 🥂 🥂 🥂 🥂 🥂 🥂 🥂 🥂 🥂 🥂 

        Q7:为什么需要它?—— “完好性”的重要性

        A:想象一下你正在驾驶飞机,依靠GPS进行盲降。此时,如果一颗卫星由于自身钟差、轨道误差或信号传播问题,发出了错误的信号,导致你的定位结果偏离了真实位置几十米,而你和自动驾驶系统却对此毫不知情,后果将是灾难性的。

        准确性:定位结果与真实位置的接近程度。(误差小)

        连续性:系统在一段时间内持续提供导航服务的能力。(不中断)

        可用性:系统在需要时能够提供导航服务的能力。(有信号)

        完好性:系统在不能用于导航时,及时向用户发出告警的能力。(这是RAIM的核心)

        RAIM就是为了保障“完好性”而生的。它就像是一个内置的“质检员”,时刻检查着用来计算位置的“原材料”(卫星信号)是否合格。

🎄🎄🎄🎄🎄🎄🎄🎄🎄🎄🎄🎄🎄🎄🎄🎄🎄🎄🎄🎄🎄🎄🎄🎄🎄🎄🎄🎄🎄🎄

  • 实时性‌:接收机自主完成检测,无需依赖地面站,特别适合航空、航海等需要快速响应的领域。
  • 可靠性‌:通过排除故障卫星,RAIM可大大降低了因信号错误导致导航偏差的风险。

🎄🎄🎄🎄🎄🎄🎄🎄🎄🎄🎄🎄🎄🎄🎄🎄🎄🎄🎄🎄🎄🎄🎄🎄🎄🎄🎄🎄🎄🎄🎄

引言

🎄🎄🎄🎄🎄🎄🎄🎄🎄🎄🎄🎄🎄🎄🎄🎄🎄🎄🎄🎄🎄🎄🎄🎄🎄🎄🎄🎄🎄🎄🎄

        航空完好性监测技术的诞生源于民航领域对飞行安全体系的严苛要求。在全球航空运输网络快速扩展与运力需求呈指数级攀升的背景下,该技术作为保障航行安全的核心要素,已从最初的航电系统配套功能演变为支撑现代空中交通管理的关键技术体系。如,飞机在进近离场阶段,飞行高度骤变、复杂气象扰动及地形障碍威胁常构成重大安全威胁,究其根源在于导航系统完好性监测体系尚未完善‌。

        RAIM算法在航空、航海、自动驾驶和无人机这几个领域应用得最广,核心就是靠它自主监测卫星信号,确保定位安全可靠。

🎄🎄🎄🎄🎄🎄🎄🎄🎄🎄🎄🎄🎄🎄🎄🎄🎄🎄🎄🎄🎄🎄🎄🎄🎄🎄🎄🎄🎄🎄🎄

航空领域

🎄🎄🎄🎄🎄🎄🎄🎄🎄🎄🎄🎄🎄🎄🎄🎄🎄🎄🎄🎄🎄🎄🎄🎄🎄🎄🎄🎄🎄🎄🎄

  • 越洋飞行‌:在跨洋或偏远地区,地面导航设施覆盖不到,主要依赖GPS。RAIM能实时监测信号,快速识别并排除故障卫星,避免因信号错误导致导航偏差。
  • 法规要求‌:FAA规定航空用GPS接收机必须配备RAIM功能,尤其在越洋和偏远区域,它甚至能作为主导航系统。

🎄🎄🎄🎄🎄🎄🎄🎄🎄🎄🎄🎄🎄🎄🎄🎄🎄🎄🎄🎄🎄🎄🎄🎄🎄🎄🎄🎄🎄🎄🎄

航海领域

🎄🎄🎄🎄🎄🎄🎄🎄🎄🎄🎄🎄🎄🎄🎄🎄🎄🎄🎄🎄🎄🎄🎄🎄🎄🎄🎄🎄🎄🎄🎄

  • 船舶导航‌:保障船舶在海上航行时的导航安全,通过RAIM技术实时监测卫星信号,确保定位数据准确。

🎄🎄🎄🎄🎄🎄🎄🎄🎄🎄🎄🎄🎄🎄🎄🎄🎄🎄🎄🎄🎄🎄🎄🎄🎄🎄🎄🎄🎄🎄🎄

自动驾驶领域

🎄🎄🎄🎄🎄🎄🎄🎄🎄🎄🎄🎄🎄🎄🎄🎄🎄🎄🎄🎄🎄🎄🎄🎄🎄🎄🎄🎄🎄🎄🎄

  • 车辆导航‌:在自动驾驶中,RAIM技术通过实时监测卫星信号,确保车辆定位的准确性和安全性。

🎄🎄🎄🎄🎄🎄🎄🎄🎄🎄🎄🎄🎄🎄🎄🎄🎄🎄🎄🎄🎄🎄🎄🎄🎄🎄🎄🎄🎄🎄🎄

无人机领域

🎄🎄🎄🎄🎄🎄🎄🎄🎄🎄🎄🎄🎄🎄🎄🎄🎄🎄🎄🎄🎄🎄🎄🎄🎄🎄🎄🎄🎄🎄🎄

  • 低空飞行‌:在低空经济领域,“星算”可为低空飞行器提供卫星三维导航系统,确保低空飞行的安全有序。

🎄🎄🎄🎄🎄🎄🎄🎄🎄🎄🎄🎄🎄🎄🎄🎄🎄🎄🎄🎄🎄🎄🎄🎄🎄🎄🎄🎄🎄🎄🎄

其他领域

🎄🎄🎄🎄🎄🎄🎄🎄🎄🎄🎄🎄🎄🎄🎄🎄🎄🎄🎄🎄🎄🎄🎄🎄🎄🎄🎄🎄🎄🎄🎄

  • 环境监测‌:卫星通过人工智能技术长期跟踪全球气候变化、森林覆盖率变化、海洋污染等情况,为全球环境治理提供数据支持。
  • 农业领域‌:卫星能够精准监测农作物生长状况,为精准农业提供灌溉、施肥等决策依据,助力农业可持续发展。

🔎以下是博主在RAIM方面做的一些工作,包含论文、专利🔍

🎧同时也做了一些代码开源和算法改进的工作🎧


🎄🎄🎄🎄🎄🎄🎄🎄🎄🎄🎄🎄🎄🎄🎄🎄🎄🎄🎄🎄🎄🎄🎄🎄🎄🎄🎄🎄🎄🎄🎄

论文

🎄🎄🎄🎄🎄🎄🎄🎄🎄🎄🎄🎄🎄🎄🎄🎄🎄🎄🎄🎄🎄🎄🎄🎄🎄🎄🎄🎄🎄🎄🎄

▶️ 博主是从2019年开始研究RAIM算法,至今也是发表和申请了些许论文和专利:

[1] 基于奇异值分解的双星故障识别算法[J/OL].导航定位与授时,1-9[2025-12-30].https://link.cnki.net/urlid/10.1226.V.20250905.1700.008.

[2] 基于抽样一致性的RAIM算法研究[C]//中国卫星导航系统管理办公室学术交流中心.第十四届中国卫星导航年会论文集——S02卫星导航系统与增强,2024:25-30.DOI:10.26914/c.cnkihy.2024.000121.

[3] 基于奇异值分解的接收机自主完好性监测算法[J].导航定位与授时,2023,10(03):89-95.DOI:10.19306/j.cnki.2095-8110.2023.03.010.

[4] 基于改进RANSAC算法的BDS接收机自主完好性监测算法研究[C]//中国卫星导航系统管理办公室学术交流中心.第十二届中国卫星导航年会论文集——S03 导航信号与信号处理,2021:65-71.DOI:10.26914/c.cnkihy.2021.002367.

[5] 同步双星故障的BDS/GPS接收机自主完好性监测算法[C]//中国卫星导航系统管理办公室学术交流中心.第十一届中国卫星导航年会论文集——S07 卫星导航增强技术,2020:75-81.

[6] 双星故障识别的方法、装置、电子设备及存储介质:202310608038.6[P].2025-11-18.

[7] 卫星故障识别方法、装置、电子设备及存储介质:202211227991.8[P].2023-01-20.

[8] 接收机自主完好性监测方法及装置

🛫 RANSAC-RAIM算法框架

🛫 核心算法推导:

注意引自博主已发表论文

🎄🎄🎄🎄🎄🎄🎄🎄🎄🎄🎄🎄🎄🎄🎄🎄🎄🎄🎄🎄🎄🎄🎄🎄🎄🎄🎄🎄🎄🎄🎄

开源

🎄🎄🎄🎄🎄🎄🎄🎄🎄🎄🎄🎄🎄🎄🎄🎄🎄🎄🎄🎄🎄🎄🎄🎄🎄🎄🎄🎄🎄🎄🎄

🚁 博主基于Matlab编写了基本的RAIM算法代码,开源放在GitHub,包含运行数据

        此代码可以直接运行生成结果

clear all

Satellite_S = importdata('SatellitePostion.txt');
Receiver = importdata('ReceiverPostion.txt');
%接收机数据:1,2,3-XYZ,4-位置更新,5,6,7-PreciseXYZ,8-位置更新
Satellite = Satellite_S(:,[2,3,17,18,19,25,27,28,29,34]);
%卫星数据:1-TOW,2- PRN,3,4,5-XYZ,6-RANGE,7,8,9- PreciseXYZ,10PreciseRANGE

BugSate1 = find(Satellite(:, 2) == 3); %假设3号星为故障星
len1 = length(BugSate1);
Satellite(BugSate1,7) = Satellite(BugSate1,7) + randi([20,30],len1,1);
Satellite(BugSate1,8) = Satellite(BugSate1,8) + randi([20,30],len1,1);
Satellite(BugSate1,9) = Satellite(BugSate1,9) + randi([20,30],len1,1);

% BugSate2 = find(Satellite(:, 2) == 13); %假设13号星为故障星
% len2 = length(BugSate2);
% Satellite(BugSate2,7) = Satellite(BugSate2,7) + randi([-20,-10],len2,1);
% Satellite(BugSate2,8) = Satellite(BugSate2,8) + randi([-20,-10],len2,1);
% Satellite(BugSate2,9) = Satellite(BugSate2,9) + randi([-20,-10],len2,1);

TimeSpan = unique(Satellite(:, 1));     %%SOW
N = [];
N_Satellite = [];

td = [4.7989, 4.8352, 4.8658, 4.8922, 4.9153, 4.9359, 4.9545, 4.9713, 4.9868, 5.0011, 5.0144, 5.0268, 5.0384, 5.0494, 5.0597, 5.0695];
sigma_T = [4.4172, 4.7985, 5.0894, 5.3360, 5.5548, 5.7539, 5.9379, 6.1100, 6.2722, 6.4262, 6.5731, 6.7139, 6.8492, 6.9797, 7.1058, 7.2281];
for ii = 1:size(TimeSpan)
    this_TOW = TimeSpan(ii);
    index = find(Satellite(:, 1) == this_TOW);
    CurrData = Satellite(index, :);  %取对应时间点的所有观测数据
    nsat = size(CurrData,1);
    sat = CurrData(:,2); %可观测卫星号 
    Pse = CurrData(:,10); %伪距
    if nsat < 5 
        continue        
    end
            
    H = [];        
    R = [];
    for jj = 1:nsat
        R(jj) = sqrt( (Receiver(ii,5) - CurrData(jj,7))^2 + (Receiver(ii,6) - CurrData(jj,8))^2 + (Receiver(ii,7) - CurrData(jj,9))^2);
        H(jj,1:3) = (Receiver(ii,5:7) - CurrData(jj,7:9))/R(jj);
        H(jj,4) = 1;
    end    
    %先取5颗星
        PRN = sat(1:5);
        R1 = R(1:5);
        H1 = H(1:5,:);
        S1 = eye(5) - H1 * inv(H1'*H1) * H1';
%         if (nsat-rank(S)-4) == 0   %只取秩满足要求的数据
%             V = R' - CurrData(:,10);
%             err = S*V;
%             del = sqrt(err'*err/(nsat-4));  %检测统计量
%         else
%             continue
%         end   
          V1 = R1' - Pse(1:5); %伪距误差
          err = S1*V1;
          Sigma = sqrt((err'* err)/(5-4));
%         del = sqrt(err'*err/(nsat-4));  %检测统计量
%         N = [N;[nsat,nsat-rank(S)]];  %S的秩是否为nsat-4
          %假如误警为0.5%,查分位数表T^2=7.8794
          Sigma0 = 2; 
          
          %% add
          SigmaT = Sigma0 * sigma_T(1);
           
          
          %T = sqrt(7.8794);
          %SigmaT = Sigma0*T;%只取5颗星,n-4为1
          %if Sigma < SigmaT  %选取的5颗星可用
          if Sigma < SigmaT
              R2 = R(1:5);
              H2 = H(1:5,:);
              Pse2 = Pse(1:5);
              PRN = sat(1:5);
              for k0 = 1:nsat-5
                    R2 = [R2,R(5+k0)];
                    H2 = [H2;H(5+k0,:)];
                    Pse2 = [Pse2;Pse(5+k0)];
                    S = eye(size(H2,1)) - H2 * inv(H2'*H2) * H2';
                    V = R2' - Pse2;
                    err = S*V;
                    Sigma = sqrt(err'*err/(length(PRN)-3));
                    if Sigma < SigmaT
                        PRN = [PRN;sat(5+k0)];  %只需取出对应的卫星号
                    else
                        R2(end) = [];
                        H2(end,:) = [];
                        Pse2(end) = [];
                    end
              end     
          else      %5颗星中存在一颗故障星
              d = abs(V1)./(Sigma0 * sqrt(diag(S1)));  %或者计算斜率,选斜率最大的
              [Max,passPRN] = max(d);
%               A = inv(H1'*H1)*H1'; 
%               Slope = sqrt((A(2,:).^2 + A(3,:).^2)'./diag(S1));
%               [Max,passPRN] = max(Slope);
    

              
              %%lambda = (S1 * V1 * V1') / (Sigma0 * Sigma0); 
              R(passPRN) = [];   %把故障星对应的数据清除
              H(passPRN,:) = [];
              Pse(passPRN) = [];
              sat(passPRN) = [];
              R3 = R(1:4);
              H3 = H(1:4,:);
              Pse3 = Pse(1:4);
              PRN = sat(1:4);
              for t0 = 1:nsat-5
                  R3 = [R3,R(4+t0)];
                  H3 = [H3;H(4+t0,:)];
                  Pse3 = [Pse3;Pse(4+t0)];
                  S = eye(size(H3,1)) - H3 * inv(H3'*H3) * H3';
                  V = R3' - Pse3;%%
                  err = S*V;
                  Sigma = sqrt(err'*err/(length(PRN)-3));
                  if Sigma < SigmaT
                        PRN = [PRN;sat(4+t0)];  %只需取出对应的卫星号
                  else
                      R3(end) = [];      
                      H3(end,:) = [];
                      Pse3(end) = [];
                  end
               end
          end
      N_Satellite = [N_Satellite;PRN];    
end

for tt = 1:nsat-5
  D(tt) = abs(err(tt)) / (Sigma0 * sqrt(S1(tt,tt)));
  if D(tt) > td(5-4)
      tt
  end
end

🎄🎄🎄🎄🎄🎄🎄🎄🎄🎄🎄🎄🎄🎄🎄🎄🎄🎄🎄🎄🎄🎄🎄🎄🎄🎄🎄🎄🎄🎄🎄

算法改进

🎄🎄🎄🎄🎄🎄🎄🎄🎄🎄🎄🎄🎄🎄🎄🎄🎄🎄🎄🎄🎄🎄🎄🎄🎄🎄🎄🎄🎄🎄🎄

🥂 基于奇异值分解的接收机自主完好性监测:

%% *************************************************
%% Author:      Michael Beechan
%% Time:        20220830
%% Address:     MianYang
%% Function:    RAIM: SVD  单星故障
%% Modify:      20220830
%% *************************************************

%% 接收机数据:1,2,3-XYZ,4-位置更新,5,6,7-Precise XYZ,8-位置更新
%% 卫星数据:  1-TOW,2- PRN,3,4,5-XYZ,6-RANGE,7,8,9-Precise XYZ,10-Precise RANGE

clc;
clear all
close all

temp = 0;                  %% 可修改调节
Satellite_S = importdata('SatellitePostion.txt');
Receiver = importdata('ReceiverPostion.txt');

Satellite = Satellite_S(:,[2,3,17,18,19,25,27,28,29,34]);

num = 0;

%% Aquire SOW:获取SOW
%% Satellite Number:25 15 3 19 16 18 7 21 22 
TimeSpan = unique(Satellite(:, 1));


if temp == 1                                    % 部分星历
    BugSate1 = find(Satellite(:, 2) == 19);     % 假设故障星
    len1 = length(BugSate1);
    for i = 1 : len1                            % 循环选定故障星对应的数据 x y z    %% 有问题
        if  (i >= 300) & (i <= 400)
            Satellite(BugSate1(i),7) = Satellite(BugSate1(i), 7) + randi([30, 40], 1, 1);
            Satellite(BugSate1(i),8) = Satellite(BugSate1(i), 8) + randi([30, 40], 1, 1);
            Satellite(BugSate1(i),9) = Satellite(BugSate1(i), 9) + randi([30, 40], 1, 1);
        else
            Satellite(BugSate1(i),7) = Satellite(BugSate1(i), 7);
            Satellite(BugSate1(i),8) = Satellite(BugSate1(i), 8);
            Satellite(BugSate1(i),9) = Satellite(BugSate1(i), 9);
        end
    end
end

% N_Satellite = [];

%% Alarm Threshold: 告警门限
%% 故障检测门限
sigma_T = [4.4172, 4.7985, 5.0894, 5.3360, 5.5548, 5.7539, 5.9379, 6.1100, 6.2722, 6.4262, 6.5731, 6.7139, 6.8492, 6.9797, 7.1058, 7.2281];
%% 故障识别门限
td = [4.7989, 4.8352, 4.8658, 4.8922, 4.9153, 4.9359, 4.9545, 4.9713, 4.9868, 5.0011, 5.0144, 5.0268, 5.0384, 5.0494, 5.0597, 5.0695];

Sigma0 = 1;             % 测量噪声方差

%% 空数组用于存储卫星号
Sat = zeros(length(TimeSpan),10);   

%% 遍历
for ii = 1:size(TimeSpan)
    
    if ii == 416
        if temp == 0                                    % 全部星历
            %% 21号卫星故障
            BugSate1 = find(Satellite(:, 2) == 3);     % 假设故障星
            len1 = length(BugSate1);

            Satellite(BugSate1,7) = Satellite(BugSate1, 7) + num;
            Satellite(BugSate1,8) = Satellite(BugSate1, 8) + num;
            Satellite(BugSate1,9) = Satellite(BugSate1, 9) + num;
        end
    end
    
	this_TOW = TimeSpan(ii);
    index = find(Satellite(:, 1) == this_TOW);  % n*1
    CurrData = Satellite(index, : );            % 取对应时间点的所有观测数据 n*10
    nsat(ii) = size(CurrData, 1);               % 当前可视卫星总数 n
    sat = CurrData(:, 2);                       % 可观测卫星号 n*1
    SortSat = sort(sat, 'ascend');              % 卫星号排序  升序
    Sat(ii, 1:nsat(ii)) = SortSat';                  % 记录卫星号
    Pse = CurrData(:, 10);                      % 伪距 n*1
    if nsat(ii) < 5 
        continue        
    end
            
    H = [];                                     % n*4    
    R = [];
    %% Compute H Matrix: 计算H矩阵
    for jj = 1:nsat(ii)
        R(jj) = sqrt( (Receiver(ii, 5) - CurrData(jj, 7))^2 + (Receiver(ii, 6) - CurrData(jj, 8))^2 + (Receiver(ii, 7) - CurrData(jj, 9))^2);
        H(jj, 1:3) = (Receiver(ii, 5:7) - CurrData(jj, 7:9)) / R(jj);
        H(jj, 4) = 1;
    end 
    
    %% A是4*n维矩阵:广义逆矩阵:伪逆
    A = inv(H' * H) * H';
    
    %% Q是n*n维矩阵:残差敏感矩阵
    Q = 1 - H * inv(H' * H) * H';
    
    R1 = R(1:nsat(ii));                 % 1*n
    V1 = R1' - Pse(1:nsat(ii));         % 伪距误差 n*1
    %% SVD 分解
    [U, D, V] = svd(H);
    UT = U';
    Ux = UT(1:4, :);
    Up = UT(5:nsat(ii), :);
    UpSize = size(Up);
    pu = Up * V1;                    % 计算奇偶矢量  (n-4)*1
    SSE(ii) = pu' * pu;                   % 残差平方和:用于故障检测
    for kk = 1 : UpSize(2)
        Up_i = Up(:, kk);
        r(ii, kk) = (pu' *  Up_i) / (Sigma0 * sqrt( Up_i' *  Up_i));         % 用于故障识别
    end

    %% 剔除故障星
end
figure(1);
plot(SSE,'-r','LineWidth',1.5)
legend('SSE')
figure(2);
plot(T - Td,'-r','LineWidth',1.5)
hold on
plot(T,'-b','LineWidth',1.5)
hold on
plot(Td,'-k','LineWidth',1.5)
max(SSE)
legend('T-Td', 'T', 'Td')
figure(3);
plot(nsat,'-r','LineWidth',1.5)
legend('Sum sat')
Sat
% sqrt(max(SSE)/ (nsat - 4))
% [rank, order]=sort(SSE,'descend');
% rank(2)
% sqrt(rank(2) / (nsat - 4))
% Sigma0 * sigma_T(nsat - 4) / sqrt(nsat - 4)

🎄🎄🎄🎄🎄🎄🎄🎄🎄🎄🎄🎄🎄🎄🎄🎄🎄🎄🎄🎄🎄🎄🎄🎄🎄🎄🎄🎄🎄🎄🎄

参考文献

🎄🎄🎄🎄🎄🎄🎄🎄🎄🎄🎄🎄🎄🎄🎄🎄🎄🎄🎄🎄🎄🎄🎄🎄🎄🎄🎄🎄🎄🎄🎄

北斗导航 | 接收机自主完好性监测(RAIM)算法近三年研究现状总结(2022-2025)

北斗导航 | 接收机自主完好性监测(RAIM)算法:原理、技术要点与应用场景

北斗导航  |  接收机自主完好性监测(RAIM)算法学习思路总结及其算法研究:理论、实现与验证

北斗导航 | 基于LSTM的接收机自主完好性监测(RAIM)算法研究

北斗导航 | 2024-2025年RAIM算法研究进展总结

北斗导航 | 接收机自主完好性监测与神经网络结合的技术路径、应用场景及研究进展

北斗导航 | RAIM中基本公式

北斗导航 | ARAIM(高级接收机自主完好性监测)算法在民航LPV-200进近中的具体实现流程

北斗导航 | 单星故障下的接收机自主完好性监测算法研究综述

北斗导航 | 接收机自主完好性监测算法之奇偶矢量法综述

北斗导航|深入浅出【接收机自主完好性监测算法】

卫星导航

Logo

有“AI”的1024 = 2048,欢迎大家加入2048 AI社区

更多推荐