raPPPid之ZD_processing.m

发布时间:2026/7/23 3:36:05

raPPPid之ZD_processing.m 它是单历元处理的总调度函数主要流程是根据电离层模型准备状态参数↓调用 calc_float_solution 计算浮点解↓构造HMW组合↓检查可固定卫星↓选择参考卫星↓调用不同PPP-AR固定算法代码中运行顺序是1. switch settings.IONO.model 不匹配两个电离层估计分支因此进入 otherwise。2. 调用 adjPrep_ZD建立或调整本历元状态向量和协方差。3. 调用 calc_float_solution计算本历元浮点坐标、钟差、ZWD和浮点模糊度。4. 由于开启模糊度固定且不是解耦钟模型进入普通PPP-AR分支。5. create_HMW_LC 构造并平滑HMW组合。6. Adjust.fix_now(1)true本历元允许尝试固定。7. CheckSatellitesFixable 标记可固定卫星。8. handleRefSats为各系统选择参考卫星。9. 模型是双频IF因此调用 PPPAR_IF。10. PPPAR_IF执行宽巷、窄巷固定并计算固定解函数随后返回。若 Adjust.fix_now(1)false第5步之后直接跳过固定保留浮点结果。若模型是 Estimate, decoupled clock则不建立普通HMW/参考星路径而是调用 PPPAR_DCM。代码详解1、进入 switch 多分支判断依据 settings.IONO.model 的文本内容选择不同的参数准备函数。花括号创建 cell 数组表示这两个字符串都进入同一分支约束电离层估计或普通电离层估计。调用 adjPrep_iono返回更新后的 Epoch 和 Adjust。输入中的 Epoch.old.sats 是上一历元卫星集合用于新增、消失卫星和状态参数重排。当电离层模型严格等于“Estimate, decoupled clock”时进入解耦钟模型准备分支。调用 adjPrep_DCM为解耦钟模型准备参数向量、协方差阵和卫星相关状态。otherwise 相当于其他所有情况的默认分支。调用 adjPrep_ZD准备普通零差 PPP 参数估计。此分支通常覆盖双频IF、三频IF、GRAPHIC或关闭电离层估计等模型。switch settings.IONO.model case {Estimate with ... as constraint, Estimate} [Epoch, Adjust] adjPrep_iono(settings, Adjust, Epoch, Epoch.old.sats, obs, input); case Estimate, decoupled clock [Epoch, Adjust] adjPrep_DCM(settings, Adjust, Epoch, Epoch.old.sats, obs, input); otherwise [Epoch, Adjust] adjPrep_ZD(settings, Adjust, Epoch, Epoch.old.sats, obs, input); end2、调用 calc_float_solution 计算本历元浮点解返回更新的 Epoch、Adjust 和所有模型改正项 model。这一步是进入PPP-AR之前的核心浮点估计。% estimation of float paramaters [Epoch, Adjust, model] calc_float_solution(input, obs, Adjust, Epoch, settings);3、只有启用模糊度固定并且不是解耦钟模型时才进入普通PPP-AR分支。if settings.AMBFIX.bool_AMBFIX ~strcmp(settings.IONO.model, Estimate, decoupled clock)4、调用 create_HMW_LC 构造Hatch-Melbourne-Wübbena组合并更新Adjust。model.los_APC通常是天线相位中心处的视线几何量。检查 Adjust.fix_now 的第1个元素。MATLAB下标从1开始只有该标志为真时本历元才真正尝试固定。% --- build HMW LC --- [Adjust] create_HMW_LC(Epoch, settings, Adjust, model.los_APC); if Adjust.fix_now(1)5、检查哪些卫星满足固定条件例如观测完整、无周跳、偏差产品存在、卫星高度角或连续跟踪时间满足要求。% --- check which satellites are fixable Epoch CheckSatellitesFixable(Epoch, settings, model, input);6、选择或维护每个系统的参考卫星。model.el 是卫星高度角通常优先选择质量较好、较高且连续的卫星。% --- choose reference satellite for fixing --- [Epoch, Adjust] handleRefSats(Epoch, model.el, settings, Adjust);7、再次根据电离层/观测模型选择具体PPP-AR算法。如果启用了模糊度固定但前面的条件因解耦钟模型而不成立则进入该 elseif。switch settings.IONO.model case 2-Frequency-IF-LCs [Epoch, Adjust] PPPAR_IF(Adjust, Epoch, settings, input, obs, model); case 3-Frequency-IF-LCs [Epoch, Adjust] PPPAR_3IF(Adjust, Epoch, settings, input, obs, model); case {Estimate with ... as constraint, Estimate, off} % off: simulated data [Epoch, Adjust] PPPAR_UC(Adjust, Epoch, settings, obs, model); otherwise fprintf(2, \nPPP-AR is not implemented for this ionosphere model!\n) end end elseif settings.AMBFIX.bool_AMBFIX8、解耦钟模型也先检查可固定卫星。调用 PPPAR_DCM执行解耦钟模型专用的整数固定和固定解计算。% Decoupled Clock Model: integer ambiguity fixing and fixed solution % check which satellites are fixable Epoch CheckSatellitesFixable(Epoch, settings, model, input); % fix ambiguities and calculate fixed solution [Epoch, Adjust] PPPAR_DCM(Adjust, Epoch, settings); end

相关新闻