Files
vd-analysis/docs/filter-coefficient-79-vs-64.md
T
wangfq 1d15a36374 docs(vd-analysis): 新增滤波系数 79/64 专题对比分析(α/τ/阶跃/噪声/单频衰减)
- 新增 docs/filter-coefficient-79-vs-64.md:ALFA_CAP1=79 vs ALFA_CAP2=64
  量化对比(确定性计算+白噪声模拟,非现场实测)
- 各型号实际生效系数梳理:M1H/PD136HA/DLD 系差异
- 结论:79 保响应白赚,防误触发靠斜率限幅+进入确认而非调 α
- 对比总表 IIR 行挂专题链接
2026-08-28 08:23:02 +08:00

4.5 KiB
Raw Blame History

滤波系数 79 vs 64 专题分析(ALFA_CAP1 / ALFA_CAP2

日期:2026-08-28 依据:M1H/PD132L/PD132T/PD136HA 参考代码 + DLD154V4B/154Pro 现行实现 数据:确定性数学计算 + 白噪声模拟(seed=42),非现场实测;时间常数含产品线口径(256/α)与精确口径(ln)两套。

1. 背景:79/64 是什么

DLD 血统参考代码(M1H → PD132L → PD132T → PD136HA → DLD154V4B)的 MAIN.h 定义四个滤波系数:

#define ALFA_CAP1  79   // 检测通道 IIR —— 增强滤波(响应快)
#define ALFA_CAP2  64   // 检测通道 IIR —— 普通滤波(更平滑)
#define ALFA_ORG1  64   // 基线通道 IIR
#define ALFA_ORG2  64   // 基线通道 IIR

滤波公式(PD132L 源码确认,Δ×Flt_Reg>>8 双向):

if (Value > CAPVD) CAPVD += (Value - CAPVD) * Flt_Reg >> 8;
else               CAPVD -= (CAPVD - Value) * Flt_Reg >> 8;

即一阶 IIRy = y_prev + α(x y_prev)α = Flt_Reg/256,每测量节拍执行一次。

2. 各型号实际生效系数(不是全都用 79)

型号 生效系数 说明
M1H (8051, 2008) 恒 79 ALFA_CAP2 定义了但 main 恒用 79DLD 血统源头
PD132T (8051, 2021) 拨码 SET_FLT 切换 79/64 唯一给用户开关的型号
PD136HA (M0+, 2021) 恒 64 INIT_VD 置 79,但主循环 CAP_OK 分支强制 Flt_Reg = ALFA_CAP2SET_FLT 分支已注释
DLD154V4B / vd960Loop (M4) 恒 79 外加 5% 斜率限幅 + 进入确认 3 次(M4 优化)
DLD154Pro (RISC-V) 恒 79 @8.74ms τ≈28ms

基线通道 ALFA_ORG1/2=64 与检测通道无关:低频温漂两者都拦不住(0.5Hz 以下增益≈0dB),漂移由基线跟踪(有车冻结 + 冻结超时 + 漂移监测)处理,不靠检测 IIR。

3. 系数与时间常数

指标 α=79/256 α=64/256
α 0.3086 0.2500
τ @10ms(产品线口径 256/α) 32.4 ms 40.0 ms
τ @10ms(精确 ln 口径) 27.1 ms 34.8 ms
τ @8.74ms154Pro 节拍) 28.3 ms 35.0 ms
等效记忆窗口 3.24 样本 4.00 样本

各型号节拍下的 τ 对照(产品线口径):

型号 测量节拍 τ(79) τ(64)
M1H 32.8 ms 106 ms 131 ms
PD132L 27.3 ms 88 ms 109 ms
PD132T 43.7 ms 142 ms 175 ms
PD136HA 21.8 ms 71 ms 87 ms(实际生效)
DLD154V4B 10 ms 32 ms 40 ms
DLD154Pro 8.74 ms 28 ms 35 ms

4. 阶跃响应(车辆进入,Origin=131072,中档 dlt=216,信号深 2×dlt=432

采样点 α=79 输出 α=64 输出
0 131072 131072
1 130939 130964
2 130847 ← 越线 130883
3 130783 130822 ← 越线
  • 越线(进入触发)79 第 2 样本 = 20ms64 第 3 样本 = 30ms差 10ms
  • 95% 收敛79 = 81ms64 = 104ms差 23ms
  • 叠加进入确认 3 次(V4B)后:79 ≈ 50ms64 ≈ 60ms——确认机制本身 30ms,把滤波差异摊薄一半

5. 噪声抑制(64 的卖点,数据很弱)

噪声类型 79 64 64 多压的
白噪声 RMS 7.4 dB 8.5 dB 1.1 dB
50 Hz 工频 @10ms 15.1 dB 16.9 dB 1.8 dB
10 Hz 慢拍(注入锁定前兆) 5.6 dB 7.5 dB 1.8 dB
5 Hz 1.5 dB 3.4 dB 1.8 dB
0.5 Hz 以下(温漂) ≈0 dB ≈0 dB 都拦不住

模拟验证:输入白噪声 σ=20 计数值(≈中档阈值 9%)跑 10000 点,79 输出最大偏差 27.8、64 输出 27.5——工程上无差别

6. 结论

  1. 79 是白赚的:触发快 10ms、收敛快 23ms,代价仅少压 1dB 噪声。单极点 IIR 在 α=0.250.31 区间是"响应优先"区间,往下压收益递减(79→50 才明显,但 τ 已到 51ms)。
  2. PD136HA 恒 64 是保守派:SET_FLT 注释死,主动放弃响应换 1.1dB 平滑,数据看不划算
  3. 防误触发不靠滤波系数V4B 的做法正确——79 保响应,斜率限幅(单次 >5% 截断)打 EMI 尖峰 + 进入确认 3 次打单次噪声,算法层拦截比调 α 有效两个数量级。
  4. 基线通道恒 64 是另一回事:温漂两者都拦不住,靠冻结 + 漂移监测(见 variation-physics-and-drift-health.md 相关分析)。

建议:检测通道无脑 79;要防误触发加斜率限幅 + 进入确认,别在 α 上抠 1dB。