2025-03-10改进
旧代码会漏检部分脉冲信号。最新代码及说明如下。【免费】基于动态阈值与滑动窗口的IQ信号突发检测算法实现资源-优快云文库
1. 算法核心设计
1.1 噪声基底估计
- 部分采样法:每16个IQ样本取一个能量值,避免全数据排序,提升计算效率。
- 噪声阈值计算:通过统计5%分位点能量值作为初始噪声基底,结合滑动窗口最小能量均值(
minWinEnergy
)动态修正噪声门限。
1.2 动态阈值设定
- 多条件约束:噪声基底、平均能量(
avgEnergy
)和最大能量(maxEnergy
)联合确定动态阈值(dynamic_threshold
),公式为: threshold=min(max(noise_floor×thresholdFactor,avgEnergy×0.3),maxEnergy×0.05)threshold=min(max(noise_floor×thresholdFactor,avgEnergy×0.3),maxEnergy×0.05) 兼顾低信噪比与高动态范围场景。
1.3 突发检测逻辑
- 状态机模型:通过
inBurst
标志位区分突发与静默状态,结合连续超阈值样本数(REQUIRED_ABOVE
)和连续低阈值样本数(REQUIRED_BELOW
)判定突发起止点。 - 边界保护:引入保护间隔(
GUARD_LEN
)避免信号边沿误判。
2. 性能优化策略
- 并行化计算:使用
#pragma omp parallel
加速能量计算,提升多核CPU利用率。 - 滑动窗口优化:循环展开(
#pragma unroll(4)
)减少分支预测开销,窗口能量增量更新避免重复计算。 - 内存预分配:预分配能量数组(
energy.reserve()
)和突发结果缓存(temp_bursts.reserve()
),减少动态扩容耗时。
3. 应用场景
- 无线通信:5G/NR中的随机接入信道(PRACH)检测。
- 雷达信号处理:脉冲重复间隔(PRI)分析。
- 物联网:LoRa/Wi-Fi突发信号识别。