Forráskód Böngészése

按建议继续: blade_1p 的接续入口探清(转速来源/谱命名/频率轴), 未在口径未知时硬写实现

按"先啃运动学已确定的那件"(blade_1p_records, 662 行)继续, 探清了下次可直接接着做的入口:
· 覆盖: 只 Main_bearing_front / Main_bearing_rear 两个测点; 662 行; 2026-01-27 11:35 ~ 2026-02-01 23:16
  (w0127 首窗 —— 其索引在 m5/tcm_index.parquet, 不在 windows/w0127/; 这条路径本身就踩过一次)。
· ★转速来源(重要): 样件行的 rpm 不是同一记录里 Kurtosis 行的 rpm —— 样件 rpm=1601.0371, 而索引里
  trigger_time 同一条的 Kurtosis 行 rpm=1604.2537 ⇒ 1P 分析用的是**该记录自己的转速**(RpmProfile/rawRPM
  那类), 不是标量指标行带的转速。搞错这条 f1P 就对不上(速比 119.75 不变)。
· 谱文件命名: spectra/p<NN>/<meas_name>_n<lines>_<seq>.npz(例 FFT_10000_Tr_n401_0000.npz) —— 谱件不带
  源件 UUID, 所以"记录 ↔ npz"要靠 scripts/rudong_tcm_spectra.py 的枚举顺序去对(该脚本在包内, 规则可读)。
· 频率轴: 由索引 x_offset/x_delta/lines 给出(例 FFT_16000: lines=400, x_delta=40 ⇒ 40 Hz/线);
  f1P=0.223 Hz 落在第 0 条线上 —— 正是"1P 在低频谱里极难分辨"的原因, 也解释了为什么这一族要专门做
  (样件 energy_pct 只有 0.38%)。
· 最短路径三步(都在包内可做)写进 docs §7.5: ① 读 spectra 脚本的枚举顺序建"记录→npz"映射;
  ② 重建频率轴, 在 f1P 附近按候选口径(最近线/±2% 带内取最大/抛物线插值)取幅值与样件 a1P 对拍;
  ③ a1P 对上后 struct/energy_pct/g1g2g4/verdict 按同法逐个对拍。

自我约束(写进 §7.5): 峰值拾取口径未知时**不硬写实现** —— 那样产出的数字无法证明是复现, 只会给交付物
掺进"看起来对"的东西; 取料单那一句话(或四个脚本)到位后, 上面三步当天可做完。
zhouyang.xie 3 hete
szülő
commit
95e2478558
1 módosított fájl, 19 hozzáadás és 1 törlés
  1. 19 1
      docs/振动六层链_接口规格与缺口_v0.1.md

+ 19 - 1
docs/振动六层链_接口规格与缺口_v0.1.md

@@ -209,4 +209,22 @@ MAD=0.80209 → z=−0.3116 · IQR/1.349=1.46899 → z=−0.1701 ·
 ---
 
 > 台账现状(2026-09-17):✓ 呼应成立 1742 件 · ✗ 无生成端 285 件 · ◆ 人工件 209 件 · 无法验证 0 · 未归类 0。
-> 缺料自查:`python scripts/chain_gap_check.py --check`;取料单:`docs/向振动线取料单_v0.1.md`。
+> 缺料自查:`python scripts/chain_gap_check.py --check`;取料单:`docs/向振动线取料单_v0.1.md`。
+
+### 7.5 `blade_1p_records` 的接续入口(本轮探到的确切起点)
+
+按"先啃运动学已确定的那件"继续,把下一次能接着做的入口探清楚了:
+
+| 事项 | 实测结论 |
+|---|---|
+| 覆盖范围 | 只两个测点:`Main_bearing_front` / `Main_bearing_rear`;662 行;时间 2026-01-27 11:35 ~ 2026-02-01 23:16(**w0127 首窗**,其索引在 `m5/tcm_index.parquet`,不在 `windows/w0127/`) |
+| 转速来源 | ★ 样件行的 `rpm` **不是**同一记录里 `Kurtosis` 行的 rpm:样件 `rpm=1601.0371`,而索引里 `trigger_time` 同一条的 `Kurtosis` 行 `rpm=1604.2537`。⇒ 1P 分析用的是**该记录自己的转速**(`RpmProfile` / `rawRPM` 那类),不是标量指标行带的转速。这条搞错,`f1P` 就对不上(速比 119.75 本身不变) |
+| 谱文件命名 | `spectra/p<NN>/<meas_name>_n<lines>_<seq>.npz`(例 `FFT_10000_Tr_n401_0000.npz`)—— 谱件**不带源件 UUID**,所以"某条记录 ↔ 某个 npz"要靠 `scripts/rudong_tcm_spectra.py` 的**枚举顺序**去对(该脚本在包内,规则可读) |
+| 谱本身 | npz 内是幅值数组;频率轴由索引的 `x_offset`/`x_delta`/`lines` 给出(例 `FFT_16000: lines=400, x_offset=0, x_delta=40` ⇒ 40 Hz/线)⇒ 频率轴可算;`f1P=0.223 Hz` 落在**第 0 条线**上 —— 这正是"1P 在低频谱里极难分辨"的原因,也解释了为什么这一族要专门做(样件 `energy_pct` 只有 0.38%) |
+
+**下一次接手的最短路径**(三步,都在包内可做):
+① 读 `scripts/rudong_tcm_spectra.py` 的枚举顺序,建立"记录 → npz"映射;
+② 用 `x_offset + i*x_delta` 重建频率轴,在 `f1P` 附近按候选口径(最近线 / ±2% 带内取最大 / 抛物线插值)取幅值,与样件 `a1P` 对拍;
+③ `a1P` 一旦对上,`struct`(疑似 `a1P / fleet` 归一分)、`energy_pct`、`g1/g2/g4` 闸门与 `verdict` 有望按同样办法逐个对拍。
+
+> 本轮到此为止的自我约束:**没有**在"峰值拾取口径未知"时硬写实现 —— 那样产出的数字无法证明是复现,只会给交付物掺进"看起来对"的东西。取料单里那**一句话**(或那四个脚本)到位后,上面三步当天可做完。