[学习]RTKLib详解:ppp.c与ppp_ar.c
文章目录
- RTKLib详解:ppp.c与ppp_ar.c
- Part A: ppp.c
- 一、整体作用与工作流程
- 二、核心函数说明
- 1. `pppos`
- 2. `res_ppp`
- 3. `tide_solid`
- 4. `prectrop`
- 5. `corrmeas`
- 6. `udbias_ppp`
- 三、数学原理补充
- 四、代码特点
- Part B: ppp_ar.c
- 一、整体作用与工作流程分析
- 二、函数功能与参数说明
- 1. `lam_LC(i, j, k)`
- 2. `L_LC(i, j, k, L)`
- 3. `P_LC(i, j, k, P)`
- 4. `var_LC(i, j, k, sig)`
- 5. `conffunc(N, B, sig)`
- 6. `average_LC(rtk, obs, n, nav, azel)`
- 7. `fix_amb_WL(rtk, nav, sat1, sat2, NW)`
- 8. `fix_amb_ROUND(rtk, sat1, sat2, NW, n)`
- 9. `fix_amb_ILS(rtk, sat1, sat2, NW, n)`
- 10. `pppamb(rtk, obs, n, nav, azel)`
- 三、数学推导补充
- 1.宽巷与窄巷组合
- 2.整数最小二乘(ILS)
RTKLib详解:ppp.c与ppp_ar.c
本文是 RTKLlib详解 系列文章的一篇,目前该系列文章还在持续总结写作中,以发表的如下,有兴趣的可以翻阅。
[学习] RTKlib详解:功能、工具与源码结构解析
[学习]RTKLib详解:pntpos.c与postpos.c
[学习]RTKLib详解:rtkcmn.c与rtkpos.c
[学习]RTKLib详解:ppp.c与ppp_ar.c
Part A: ppp.c
一、整体作用与工作流程
该代码实现了GNSS精密单点定位(PPP)算法,基于非差相位和伪距观测值进行卡尔曼滤波状态估计,该代码完整实现了PPP算法的所有核心环节,通过模块化设计将各个误差源独立处理,便于维护和扩展。主要流程包括:
- 状态时间更新:通过udstate_ppp更新接收机位置、钟差、对流层参数和相位偏差
- 观测方程构建:res_ppp计算理论距离与观测值的残差
- 卡尔曼滤波更新:通过filter函数进行状态估计更新
- 模糊度固定:pppamb尝试进行整周模糊度固定
具体的函数调用关系如下:
二、核心函数说明
1. pppos
void pppos(rtk_t *rtk, const obsd_t *obs, int n, const nav_t *nav)
- 功能:PPP主处理函数
- 输入:
- rtk: RTK控制结构体
- obs: 观测值数组
- n: 观测值数量
- nav: 导航数据
- 处理流程:
- 初始化状态向量
- 计算卫星位置和钟差
- 排除日食卫星观测值
- 多次迭代执行残差计算和滤波更新
- 更新解算状态和协方差矩阵
2. res_ppp
int res_ppp(int iter, const obsd_t *obs, int n, const double *rs, const double *dts, const double *vare, const int *svh,const nav_t *nav, const double *x, rtk_t *rtk, double *v, double *H, double *R, double *azel)
- 功能:计算观测残差和设计矩阵
- 数学原理:
- 几何距离计算: r = ( x i s − x ) 2 + ( y i s − y ) 2 + ( z i s − z ) 2 r = \sqrt{(x^s_i - x)^2 + (y^s_i - y)^2 + (z^s_i - z)^2} r=(xis−x)2+(yis−y)2+(zis−z)2
- 相位观测方程: ϕ = λ N + r + c ( d t r − d t s ) + T + I + ϵ \phi = \lambda N + r + c(dt^r - dt^s) + T + I + \epsilon ϕ=λN+r+c(dtr−dts)+T+I+ϵ
- 输出:
- v: 残差向量
- H: 设计矩阵
- R: 观测噪声协方差
3. tide_solid
static void tide_solid(const double *rsun, const double *rmoon, const double *pos, const double *E, double gmst, int opt, double *dr)
- 功能:计算固体地球潮汐位移
- 数学模型:
u = K 2 [ H 2 ( 3 2 cos 2 θ − 1 2 ) − 3 L 2 a 2 ] + K 3 [ H 3 ( . . . ) ] u = K_2[H_2(\frac{3}{2}\cos^2\theta - \frac{1}{2}) - 3L_2a^2] + K_3[H_3(...)] u=K2[H2(23cos2θ−21)−3L2a2]+K3[H3(...)]
其中 K n = G M r n + 1 R n K_n = \frac{GM}{r^{n+1}}R^n Kn=rn+1GMRn - 输入:
- rsun/rmoon: 日月位置向量
- pos: 测站坐标
- E: 坐标转换矩阵
4. prectrop
static double prectrop(gtime_t time, const double *pos, const double *azel,const prcopt_t *opt, const double *x, double *dtdx,double *var)
- 功能:精密对流层延迟模型
- 数学模型:
T = m h ( θ ) Z H D + m w ( θ ) ( Z W D + G n cot θ cos α + G e cot θ sin α ) T = m_h(\theta)ZHD + m_w(\theta)(ZWD + G_n\cot\theta\cos\alpha + G_e\cot\theta\sin\alpha) T=mh(θ)ZHD+mw(θ)(ZWD+Gncotθcosα+Gecotθsinα) - 参数:
- m_h/m_w: 干湿映射函数
- ZHD: 天顶静力学延迟
- G_n/G_e: 水平梯度参数
5. corrmeas
static int corrmeas(const obsd_t *obs, const nav_t *nav, const double *pos,const double *azel, const prcopt_t *opt,const double *dantr, const double *dants, double phw,double *meas, double *var, int *brk)
- 功能:电离层和天线校正
- 处理流程:
- 无电离层组合计算
- 天线相位中心校正
- 风化改正
- DCB偏差校正
6. udbias_ppp
static void udbias_ppp(rtk_t *rtk, const obsd_t *obs, int n, const nav_t *nav)
- 功能:相位偏差状态更新
- 处理步骤:
- LLI检测周跳
- 几何自由组合检测周跳
- 相位偏差初始化
- 相位-码一致性校正
三、数学原理补充
卡尔曼滤波更新公式:
-
预测:
- 状态转移: x ^ k ∣ k − 1 − = Φ k − 1 x k − 1 \hat{x}^-_{k|k-1} = \Phi_{k-1}x_{k-1} x^k∣k−1−=Φk−1xk−1
- 协方差预测: P k ∣ k − 1 − = Φ k − 1 P k − 1 Φ k − 1 T + Q k − 1 P^-_{k|k-1} = \Phi_{k-1}P_{k-1}\Phi^T_{k-1} + Q_{k-1} Pk∣k−1−=Φk−1Pk−1Φk−1T+Qk−1
-
更新:
- 卡尔曼增益: K k = P k ∣ k − 1 − H k T ( H k P k ∣ k − 1 − H k T + R k ) − 1 K_k = P^-_{k|k-1}H^T_k(H_kP^-_{k|k-1}H^T_k + R_k)^{-1} Kk=Pk∣k−1−HkT(HkPk∣k−1−HkT+Rk)−1
- 状态更新: x ^ k = x ^ k ∣ k − 1 − + K k ( z k − H k x ^ k ∣ k − 1 − ) \hat{x}_k = \hat{x}^-_{k|k-1} + K_k(z_k - H_k\hat{x}^-_{k|k-1}) x^k=x^k∣k−1−+Kk(zk−Hkx^k∣k−1−)
- 协方差更新: P k = ( I − K k H k ) P k ∣ k − 1 − P_k = (I - K_kH_k)P^-_{k|k-1} Pk=(I−KkHk)Pk∣k−1−
Saastamoinen对流层模型:
Z H D = 0.002277 P 1 − 0.00266 cos ( 2 ϕ ) − 0.00028 H ZHD = 0.002277 \frac{P}{1 - 0.00266\cos(2\phi) - 0.00028H} ZHD=0.0022771−0.00266cos(2ϕ)−0.00028HP
其中P为地面气压,φ为纬度,H为高程
四、代码特点
- 支持多系统(GPS/GLO/GAL/SBS)
- 提供多种电离层处理模式(广播星历/STEC/无模型)
- 包含完整的误差修正模型(潮汐/对流层/天线偏差)
- 实现了PPP-AR模糊度固定功能
- 支持动态/静态模式切换
Part B: ppp_ar.c
一、整体作用与工作流程分析
这段代码实现了精密单点定位(PPP)中的整数模糊度解析(AR)功能,主要目标是通过宽巷(Wide-Lane, WL)和窄巷(Narrow-Lane, NL)组合观测值,固定载波相位模糊度以提高定位精度。整体工作流程如下:
- LC(线性组合)观测值预处理:计算三频观测值的线性组合(如宽巷、窄巷组合),并进行噪声统计。
- 宽巷模糊度固定:通过双频组合的宽巷模糊度解析,利用几何无关模型和置信度验证。
- 窄巷模糊度固定:基于宽巷结果,采用四舍五入法(ROUND)或整数最小二乘法(ILS)进一步固定窄巷模糊度。
- 状态更新:将固定后的模糊度作为约束条件,更新系统状态和协方差矩阵。
详细函数调用关系如下所示。
二、函数功能与参数说明
1. lam_LC(i, j, k)
- 功能:计算线性组合的波长(m)。
- 输入:
i, j, k
:频率系数(如1,-1,0
表示 L1-L2 组合)。
- 输出:波长 λ LC = c i f 1 + j f 2 + k f 5 \lambda_{\text{LC}} = \frac{c}{i f_1 + j f_2 + k f_5} λLC=if1+jf2+kf5c。
2. L_LC(i, j, k, L)
- 功能:计算载波相位线性组合(m)。
- 输入:
L[0], L[1], L[2]
:L1/L2/L5 载波相位观测值(周)。
- 输出:组合值 L LC = i f 1 L 1 + j f 2 L 2 + k f 5 L 5 i f 1 + j f 2 + k f 5 L_{\text{LC}} = \frac{i f_1 L_1 + j f_2 L_2 + k f_5 L_5}{i f_1 + j f_2 + k f_5} LLC=if1+jf2+kf5if1L1+jf2L2+kf5L5。
3. P_LC(i, j, k, P)
- 功能:计算伪距线性组合(m)。
- 输入:
P[0], P[1], P[2]
:L1/L2/L5 伪距观测值(m)。
- 输出:组合值 P LC = i f 1 P 1 + j f 2 P 2 + k f 5 P 5 i f 1 + j f 2 + k f 5 P_{\text{LC}} = \frac{i f_1 P_1 + j f_2 P_2 + k f_5 P_5}{i f_1 + j f_2 + k f_5} PLC=if1+jf2+kf5if1P1+jf2P2+kf5P5。
4. var_LC(i, j, k, sig)
- 功能:计算线性组合的噪声方差(m²)。
- 输入:
sig
:原始观测值噪声(m)。
- 输出:方差 σ LC 2 = i 2 f 1 2 + j 2 f 2 2 + k 2 f 5 2 ( i f 1 + j f 2 + k f 5 ) 2 σ 2 \sigma^2_{\text{LC}} = \frac{i^2 f_1^2 + j^2 f_2^2 + k^2 f_5^2}{(i f_1 + j f_2 + k f_5)^2} \sigma^2 σLC2=(if1+jf2+kf5)2i2f12+j2f22+k2f52σ2。
5. conffunc(N, B, sig)
- 功能:计算模糊度整数假设的置信度。
- 输入:
N
:候选整数模糊度。B
:浮点解模糊度。sig
:模糊度标准差。
- 输出:置信度 P = ∑ i = 1 7 [ erfc ( i − x 2 σ ) − erfc ( i + x 2 σ ) ] P = \sum_{i=1}^7 \left[ \text{erfc}\left(\frac{i-x}{\sqrt{2}\sigma}\right) - \text{erfc}\left(\frac{i+x}{\sqrt{2}\sigma}\right) \right] P=∑i=17[erfc(2σi−x)−erfc(2σi+x)],其中 x = ∣ B − N ∣ x = |B-N| x=∣B−N∣。
6. average_LC(rtk, obs, n, nav, azel)
- 功能:对LC观测值进行滑动窗口平均。
- 输入:
rtk
:RTK状态结构体。obs
:观测数据数组。azel
:卫星方位角仰角数组。
- 输出:更新
rtk->ambc
中的LC均值和方差。
7. fix_amb_WL(rtk, nav, sat1, sat2, NW)
-
功能:固定宽巷模糊度。
-
输入:
sat1, sat2
:卫星编号。
-
输出:
NW
:固定后的整数宽巷模糊度。
-
公式:
B W = Δ L C 0 ( 1 ) − Δ L C 0 ( 2 ) λ W L + δ b W L ( 1 ) − δ b W L ( 2 ) (无REV_WL_FCB) B_W = \frac{\Delta LC_0^{(1)} - \Delta LC_0^{(2)}}{\lambda_{WL}} + \delta b_{WL}^{(1)} - \delta b_{WL}^{(2)} \quad \text{(无REV\_WL\_FCB)} BW=λWLΔLC0(1)−ΔLC0(2)+δbWL(1)−δbWL(2)(无REV_WL_FCB)其中 δ b W L \delta b_{WL} δbWL 为宽巷小数周偏差(FCB)。
8. fix_amb_ROUND(rtk, sat1, sat2, NW, n)
- 功能:通过四舍五入法固定窄巷模糊度。
- 输入:
NW
:宽巷模糊度数组。
- 输出:更新状态向量
rtk->x
和协方差矩阵rtk->P
。
9. fix_amb_ILS(rtk, sat1, sat2, NW, n)
- 功能:通过整数最小二乘(ILS)固定窄巷模糊度。
- 数学原理:
定义窄巷模糊度 B N L = c 1 λ 1 N 1 + c 2 λ 2 N 2 λ N L B_{NL} = \frac{c_1 \lambda_1 N_1 + c_2 \lambda_2 N_2}{\lambda_{NL}} BNL=λNLc1λ1N1+c2λ2N2,构造变换矩阵 $ D $,求解整数最小二乘问题:
min N ∈ Z n ∥ D − 1 ( B float − N ) ∥ Q 2 \min_{N \in \mathbb{Z}^n} \| D^{-1}(B_{\text{float}} - N) \|_Q^2 N∈Znmin∥D−1(Bfloat−N)∥Q2
使用 LAMBDA 算法降维后进行比值检验(ratio-test)。
10. pppamb(rtk, obs, n, nav, azel)
- 主函数:协调整个模糊度解析流程。
- 流程:
- 计算LC观测值均值。
- 枚举卫星对,固定宽巷模糊度。
- 根据
modear
选择ROUND或ILS方法固定窄巷模糊度。
三、数学推导补充
1.宽巷与窄巷组合
- 宽巷组合(如 L1-L2):
λ W L = c f 1 − f 2 ≈ 0.86 m \lambda_{WL} = \frac{c}{f_1 - f_2} \approx 0.86 \, \text{m} λWL=f1−f2c≈0.86m - 窄巷组合(如 L1+L2):
λ N L = c f 1 + f 2 ≈ 0.11 m \lambda_{NL} = \frac{c}{f_1 + f_2} \approx 0.11 \, \text{m} λNL=f1+f2c≈0.11m
2.整数最小二乘(ILS)
定义模糊度浮点解 N ^ ∈ R n \hat{N} \in \mathbb{R}^n N^∈Rn 及其协方差 Q Q Q,优化问题:
min N ∈ Z n ∥ N ^ − N ∥ Q 2 \min_{N \in \mathbb{Z}^n} \| \hat{N} - N \|_Q^2 N∈Znmin∥N^−N∥Q2
通过 Cholesky 分解降维后搜索最近整数解,并验证比值 ∥ N ^ − N 2 ∥ Q 2 ∥ N ^ − N 1 ∥ Q 2 \frac{\|\hat{N}-N_2\|_Q^2}{\|\hat{N}-N_1\|_Q^2} ∥N^−N1∥Q2∥N^−N2∥Q2 是否超过阈值。
研究学习不易,点赞易。
工作生活不易,收藏易,点收藏不迷茫 :)
相关文章:
[学习]RTKLib详解:ppp.c与ppp_ar.c
文章目录 RTKLib详解:ppp.c与ppp_ar.cPart A: ppp.c一、整体作用与工作流程二、核心函数说明1. pppos2. res_ppp3. tide_solid4. prectrop5. corrmeas6. udbias_ppp 三、数学原理补充四、代码特点 Part B: ppp_ar.c一、整体作用与工作流程分析二、函数功…...
ntdll!LdrpSnapThunk函数分析之LdrpNameToOrdinal函数返回之后得到函数地址
第一部分: OrdinalNumber LdrpNameToOrdinal( ImportString, ExportDirectory->NumberOfNames, DllBase, NameTableBase, …...
LeetCode 267:回文排列 II —— Swift 解法全解析
文章目录 摘要描述题解答案题解代码分析统计字符频率判断是否可能构成回文构建半边字符数组回溯生成半边排列 示例测试及结果时间复杂度空间复杂度实际使用场景:回文排列在真实项目里能干啥?文本处理、数据清洗类系统游戏开发:名字合法性验证…...
【渗透测试】命令执行漏洞的原理、利用方式、防范措施
文章目录 命令执行漏洞的原理、利用方式、防范措施一、原理**1. 定义与触发条件****2. 攻击链流程图** 二、利用方式**1. 利用手法与分类**(1) 系统命令注入(2) 代码执行漏洞(3) 框架漏洞利用 **2. 案例** 三、防范措施**1. 输入过滤与验证****2. 禁用危险函数****3. 安全开发*…...
旧版谷歌浏览器Chrome v116.0.5845.141下载
63位和32位均有: https://bbs.pcbeta.com/forum.php?modviewthread&tid1978299 https://www.31du.cn/open/google-chrome-v116-0-5845-141.html v116.0.5845.141的win32位版本: https://www.cr173.com/soft/435106.html v116.0.5845.97版本&…...
行业洞察| 当大模型开始协同工作:多智能体系统的崛起与挑战
你有没有想过,如果一群AI智能体拉了个工作群,它们会聊些什么? 程序员AI:“这段代码我来写!” 产品经理AI:“需求还没说完呢!” 辩论家AI:“我觉得这个方案不行!” 吃瓜…...
The Action Replay Process
Preface A commonly used inequality − x > ln ( 1 − x ) , 0 < x < 1 -x > \ln(1 - x), \quad 0 < x < 1 −x>ln(1−x),0<x<1 Proof: Let f ( x ) ln ( 1 − x ) x f(x) \ln(1 - x) x f(x)ln(1−x)x, for 0 < x < 1 0 < …...
Python基于Django的病人信息管理系统及安全策略分析(附源码,文档说明)
博主介绍:✌IT徐师兄、7年大厂程序员经历。全网粉丝15W、csdn博客专家、掘金/华为云//InfoQ等平台优质作者、专注于Java技术领域和毕业项目实战✌ 🍅文末获取源码联系🍅 👇🏻 精彩专栏推荐订阅👇dz…...
YOLOv1:开创实时目标检测新纪元
一、引言 在计算机视觉领域,目标检测一直是重要的研究方向,广泛应用于自动驾驶、安防监控、智能机器人等场景。2016年,Joseph Redmon等人提出的YOLO(You Only Look Once)v1模型,以其端到端、单阶段、实时性…...
【今日三题】跳台阶扩展问题(找规律) / 包含不超过两种字符的最长子串 / 字符串的排列(回溯—全排列)
⭐️个人主页:小羊 ⭐️所属专栏:Linux 很荣幸您能阅读我的文章,诚请评论指点,欢迎欢迎 ~ 目录 跳台阶扩展问题(找规律)包含不超过两种字符的最长子串(字符串哈希)字符串的排列(回溯—全排列) 跳台阶扩展问题(找规律) 跳台阶扩…...
MySQL 中常见的日志
1. MySQL 中常见的日志有哪些? MySQL 主要包含以下几种日志: 错误日志(Error Log):记录 MySQL 服务器的启动和停止过程中的信息,以及运行过程中出现的错误或警告信息。默认情况下,错误日志文件…...
ubuntu nobel + qt5.15.2 设置qss语法识别正确
问题展示 解决步骤 首选项里面的高亮怎么编辑选择都没用。如果已经有generic-highlighter和css.xml,直接修改css.xml文件最直接! 在generic-highlighter目录下找到css.xml文件,位置是:/opt/Qt/Tools/QtCreator/share/qtcreator/…...
线程池技术
线程池基本概念 线程池就是在任务还没有到来前,预先创建一定数量的线程放入空闲列表。这些线程都是处于阻塞状态,不消耗CPU,但占用较小的内存空间。 当新任务到来时,缓冲池选择一个空线程,把任务传入此线程中运行&…...
matlab App自动化安装和卸载
这个是文件mlappinstall安装和卸载的使用函数,并且包括运行函数。File must be a toolbox file (*.mlappinstall) Package and Share Apps — Functions matlab.apputil.createCreate or modify app project file interactively using the Package App dialog box…...
MATLAB技巧——命令行输入的绘图,中文是正常的,到了脚本(m文件)里面就变成乱码的解决方法
文章目录 文件编码(根本性措施)字体设置使用 sprintf 或 text 函数系统语言设置示例代码 使用mlx方法 总结 在 M A T L A B MATLAB MATLAB中,中文字符在命令行和脚本中的显示问题通常与字符编码设置有关。以下是一些可能导致中文乱码的原因及…...
使用OpenCV 和 Dlib 实现人脸融合技术
文章目录 引言一、技术概述二、环境准备三、关键代码解析1. 人脸关键点定义2. 获取人脸掩模3. 计算仿射变换矩阵4. 检测并提取人脸关键点5. 颜色校正 四、完整流程五、效果展示六、总结 引言 本文将介绍如何使用Python、OpenCV和dlib库实现人脸融合技术,将一张人脸…...
Codeforces Round 1022 (Div. 2)
Problem - A - Codeforces 看这数据量,算出每个排列来,是不现实的,需要找找规律 来看找规律代码 #include <bits/stdc.h> using namespace std;int main() {int t;cin >> t;while (t--){int n;cin >> n;vector<int&g…...
uniapp 震动功能实现
项目场景: 提示:这里简述项目相关背景: 在项目中有时候需要一些功能,比如震动 描述 提示:这里描述项目中遇到的问题: 在移动应用中,震动反馈是提升用户体验的重要方式。uniapp 提供了两种震…...
uniapp 搭配 uCharts
在插件市场导入插件到项目中 <view class"charts-box-main"> <qiun-data-charts type"area" :opts"opts" :chartData"chartData" /> </view> data(&#…...
Kubernetes(k8s)学习笔记(八)--KubeSphere定制化安装
1执行下面的命令修改上一篇中yaml文件来实现定制化安装devops kubectl edit cm -n kubesphere-system ks-installer 主要是将devops几个配置由False改为True 然后使用下面的命令查看安装日志 kubectl logs -n kubesphere-system $(kubectl get pod -n kubesphere-system -l …...
阿里云codeup以及本地gitclone+http
cmd命令行乱码问题、解决 chcp 65001 git代码提交 git add . git commit -m init git push origin master...
Spring Boot 多数据源事务管理
在 Spring Boot 中,当需要操作多个数据源时,事务管理会变得更加复杂。因为默认的 DataSourceTransactionManager 只支持单数据源事务,跨数据源的事务需要使用 分布式事务(Distributed Transaction) 或 柔性事务&#x…...
4.系统定时器基本定时器
目录 系统定时器 系统定时器(systick)--内核 系统定时器结构 系统滴答定时器寄存器--内核 定时周期的确定公式 配置滴答定时器 系统定时器应用 应用1.定时器构造时间点任务,解决while循环阻塞问题 应用2.定时器构造精准的ms延时 应…...
lvgl多语言设置
搭建开发环境 安装node.js 安装node.js,点击进入官网地址 安装lv_i18n lv_i18n项目地址:Github:https://github.com/lvgl/lv_i18ngit运行命令安装lv_i18n:npm i lv_i18n -g。测试命令:lv_i18n -h 搭建过程报错 …...
ICode国际青少年编程竞赛—Python—4级训练场—复杂嵌套循环
ICode国际青少年编程竞赛—Python—4级训练场—复杂嵌套循环 icode练习时遇到卡顿没有思路时怎么办,题目也很难找到不会的那道题~针对这个问题,我们开发了通过“步数”、“积木行数”来快速定位到你不会的题目~ 题目会持续更新…...
【Windows】怎么解决Win 10家庭版WMI Provider Host占用CPU过高的问题?-篇一【2025.05.07】
本文面向两种用户,普通小白和windows开发程序员。 对于小白,目标就是阻止wmi对资源的高占用。解决方法有以下几步: 查出谁在调用这个wmiprvse.exe winR 组合键打开运行,输入命令services.msc,回车或确认。 找到如下蓝色…...
Matlab 多策略改进蜣螂优化算法及其在CEC2017性能
1、内容简介 Matlab214-多策略改进蜣螂优化算法及其在CEC2017性能 可以交流、咨询、答疑 2、内容说明 对蜣螂优化算法(Dung Beetle Algorithm,DBA)进行多种策略改进,以提高其在CEC2017基准测试中的表现。 蜣螂优化算法是一种仿…...
深度学习中常见的矩阵变换函数汇总(持续更新...)
1. 转置操作 (Transpose) 概念:将矩阵的行和列互换应用场景: 在卷积神经网络中转换特征图维度矩阵乘法运算前的维度调整数据预处理过程中的特征重排 原始矩阵 A [[1, 2, 3], 转置后 A^T [[1, 4],[4, 5, 6]] [2, 5],[3, 6]]代码…...
react+ts中函数组件父子通信方式
1. 父组件通过 Props 向子组件传递数据 这是最常见也是最基本的父子组件通信方式。父组件通过 props 将数据或回调函数传递给子组件。 示例代码: // 子组件接收来自父组件的数据 interface ChildProps {message: string; }const ChildComponent: React.FC<Chi…...
string--OJ3
链接: li1 #include <iostream> using namespace std;int main() {string a;getline(cin, a);cout << a.size() - a.find_last_of(" ")-1;{}}链接: li2 class Solution { public:bool isPalindrome(string s) {for (int i 0; i < s.size(); i){i…...
项目文档归档的最佳实践有哪些?
项目文档归档的最佳实践包括:明确归档标准与流程、使用集中式文档管理系统、实施严格的版本控制、定期审查与更新文档库。其中,明确归档标准与流程尤为关键,确保团队成员能统一理解并遵守文档管理规范。这包括明确文档命名规则、分类标准、归…...
C语言学习之字符函数和字符串函数
在C语言前面的内容中,我们学习到的库函数主要还是针对输入输出以及数字相关的内容,今天我们来学习一下有关于字符相关的函数,来对字符和字符串进行操作。 目录 字符分类函数 字符转换函数 以下的函数到strtok函数使用均需要包含头文件 st…...
自编码器(Autoencoder)
自编码器 是一种无监督学习的神经网络,主要用于数据的压缩和重构。它的核心思想是通过一个编码器将输入数据编码成一个低维表示(编码),然后再通过一个解码器将这个低维表示重构回原始数据。自编码器的目标是让重构后的数据尽可能…...
黄金分割法(0.618 法)
黄金分割法简介 黄金分割法属于区间缩小法,通过逐步缩小包含极值的区间长度,逼近极值点。在每一次迭代中,使用黄金分割点 0.618 将区间分为两部分,比较这两点处的函数值,舍弃较差区间,从而逐渐逼近最优解。…...
电商双11美妆数据分析实验总结
数据分析方法与应用 数据分类与绘图 数据分类方法:通过指定列名和函数(如SUM)来分类数据,确保数据集中包含所需列,否则会报错。 嵌套柱形图应用:嵌套柱形图用于展示多层次分类的数据,如按店名和…...
TB6600HG是一款PWM(脉宽调制)斩波型单芯片双极性正弦波微步进电机驱动集成电路。
该驱动器支持电机的正向和反向旋转控制,并具有多种激励模式,包括2相、1-2相、W1-2相、2W1-2相和4W1-2相。 使用这款驱动器,只需时钟信号即可驱动2相双极性步进电机,且振动小、效率高。 主要特点: 单芯片双极性正弦波…...
java每日精进 5.07【框架之数据权限】
数据权限,实现指定用户可以操作指定范围的数据。 数据权限不支持指定用户只能查看数据的某些字段; 权限可以分成三类:功能权限、数据权限、字段权限。 目前可以使用数据脱敏实现一定程度的字段权限控制; 1.数据权限实现步骤 1.1插…...
2:点云处理—3D相机开发
1.包含相机库目录 1.include D:\中科\Ainstec3DViewer\AinstecCamSDK\AinstecCamSDK_CPP\include 2.lib D:\中科\Ainstec3DViewer\AinstecCamSDK\AinstecCamSDK_CPP\lib\win 3.release D:\中科\Ainstec3DViewer\AinstecCamSDK\AinstecCamSDK_CPP\bin 4.示例程序 D:\中科\A…...
MySQL 中的 MVCC 是什么?
MySQL 中的 MVCC(Multi-Version Concurrency Control,多版本并发控制) 是一种用于实现高并发读写操作的机制,它通过维护数据的多个版本来解决读写冲突,从而在保证事务隔离性的同时,减少锁的使用,…...
JC/T 2187-2013 铝波纹芯复合铝板检测
铝波纹芯复合铝板是指以铝波纹板为芯材,双面粘接铝板的复合板材,如下图所示,铝波纹芯复合板具有轻质,环保,吸音,隔热,防火等性能,被广泛应用于机场,医院,体育…...
数字乡村综合管理与服务平台软件需求规格说明文档
数字乡村综合管理与服务平台 软件需求规格文档 文件版本:1.3 版本 文件状态:修改完成 文件作者:7组全体成员 完成日期:2025年5月7日 文章目录 a. 引言a.1 目的a.2 文档约定a.3 预期读者与涉众分析a.4 产品的范围a.5 参考文献…...
Linux常用命令33——sudo授权普通用户执行管理员命令
在使用Linux或macOS日常开发中,熟悉一些基本的命令有助于提高工作效率,sudo命令来自英文词组super user do的缩写,中文译为“超级用户才能干的事”,其功能是授权普通用户执行管理员命令。使用su命令变更用户身份虽然好用ÿ…...
Redis--哈希类型
目录 一、Hash 哈希 1.2 常用命令 1.2.1 HSET 1.2.2 HGET 1.2.3 HEXISTS 1.2.4 HDEL 1.2.5 HKEYS 1.2.6 HVALS 1.2.7 HGETALL 1.2.8 HMGET 1.2.9 HLEN 1.2.10 HSETNX 1.2.11 HINCRBY 1.2.12 HINCRBYFLOAT 1.3 内部编码 一、Hash 哈希 几乎所有的主流编程语言都提…...
数据结构——排序(万字解说)初阶数据结构完
目录 1.排序 2.实现常见的排序算法 2.1 直接插入排序 编辑 2.2 希尔排序 2.3 直接选择排序 2.4 堆排序 2.5 冒泡排序 2.6 快速排序 2.6.1 递归版本 2.6.1.1 hoare版本 2.6.1.2 挖坑法 2.6.1.3 lomuto前后指针 2.6.1.4 时间复杂度 2.6.2 非递归版本 2.7 归并排序…...
东方泵业,室外消火栓泵 2#故障灯亮,报警生响
东方泵业,室外消火栓泵 2#故障, 图纸上显示有一个热继电器,过热了,然后它不会自动复位,需要手动复位,手动点一下那个蓝色的按钮,然后警报就解除了...
vue3:十二、图形看板- 基础准备+首行列表项展示
文章主要实现了看板页面的搭建;将看板页面加入左侧菜单;首行列表项的实现 一、效果展示 展示四个数据列表,四个列表颜色各不相同,列表左侧有颜色边线(同标题颜色、图标颜色一致);展示的数字有一个从0到当前数据逐渐增长的一个动画效果 二、图形看板的准备工作 1、创建视…...
基于开源链动2+1模式AI智能名片S2B2C商城小程序的分销价格管控机制研究
摘要:本文聚焦开源链动21模式AI智能名片S2B2C商城小程序在分销体系中的价格管控机制,通过解析其技术架构与商业模式,揭示平台如何通过"去中心化裂变中心化管控"双轨机制实现价格统一。研究显示,该模式通过区块链存证技术…...
指定Docker镜像源,使用阿里云加速异常解决
yum-config-manager --add-repo http://mirrors.aliyun.com/docker-ce/linux/centos/docker-ce.repo异常贴图 yum-config-manager:找不到命令 因为系统默认没有安装这个命令,这个命令在yum-utils 包里,可以通过命令yum -y install yum-util…...
java基础-数组
1.数组的声明和初始化: (1)静态初始化: import java.util.Arrays;public class Main {public static void main(String[] args) {int[] ids {1,2,3,4,5};System.out.println(Arrays.toString(ids));} } (2…...
CSS手动布局
CSS支持单独设置某个元素的布局,最主要的属性是 position ,它有以下几个值: static静态位置(默认值)。元素采用正常流布局,此时元素的位置偏移属性( top 、 right 、 bottom 、 left 和 z-inde…...