在线演示:真实 CSI 幅度热图回放(256 子载波)
2026-10-11 · 约 2 分钟
下面这段回放用的是真实抓包(GL-MT6000 / MT7986,5GHz HE80,256 子载波,60 秒), 在浏览器里做了降采样(348 帧 × 64 个子载波)以便流畅播放;原始数据与采集方式完全公开 [1] [2]。
← 时间纵轴:子载波(下=低频,上=高频)
绿线:逐测量运动指标(相邻测量幅度变化均值)蓝线:当前播放位置
怎么看这张图
幅度热图视角(默认)
- 横轴是时间,纵轴是子载波;颜色越亮表示该子载波在该时刻的幅度越大;
- 有人走动时,热图会出现竖向的亮暗带(多径被扰动);静止没人时趋于平稳;
- 颜色是按子载波归一化后的相对幅度,不是绝对功率——不同环境的绝对值不可直接比较。
多普勒 / 时频谱视角
- 对同一份数据做 STFT(短时傅里叶变换):纵轴是多普勒频率 0 → Nyquist,颜色越亮表示该频率上能量越强;
- 多普勒图的颜色是相对能量:先减去逐频率的静止背景(常驻谱线),再做分位数归一化,因此它突出的是随时间变化的能量,不是绝对功率;
- 由图可见运动能量集中在低频(身体缓慢摆动、呼吸引起的信道起伏),静止段整体偏暗;
- 重要限制:这条数据的 CSI 测量率只有约 5.8 次/秒,所以可观测的多普勒范围只有 0–2.87 Hz(Nyquist = 测量率 / 2)。 它足够看呼吸与慢速运动,但不是行走多普勒谱——要看到步行速度对应的多普勒,需要显著更高的测量率或专用雷达。
下面那条绿线在两个视角下都显示,是运动指标(相邻测量幅度变化均值),可以直接当"有没有在动"的廉价判据。
广告位(上线后接入 AdSense/Ezoic)
这条数据是怎么来的
| 项目 | 值 |
|---|---|
| 采集设备 | GL.iNet GL-MT6000(MT7986A + MT7976),OpenWrt + mt76 CSI |
| 频段/带宽 | 5GHz / HE80 / ch44 |
| 子载波/链路 | 256 / 2Tx × 4Rx |
| 测量率 | ≈5.8 次/秒(→ 多普勒可观测上限 0–2.87 Hz) |
| 原始数据 | 60 秒抓包(见数据集页) |
| 浏览器内 | 幅度 348 帧 × 64 子载波;多普勒 348 帧 × 32 频率格(同一时间轴,逐频率背景扣除 + 分位数归一化) |
想自己复现这条链路:复现教程 · Python 处理 · 工具与数据
参考与数据来源
本文的每条外部结论都标注来源与证据等级(分级标准);标注 E 级的是本项目可复现的实测数据。
- E 级 · 本项目实测
本项目 10 分钟实测抓包(57,293 条 / 600.0 s,SHA-256 00373f83…95e2)
Router CSI Lab · 2026
csi.okwujun.pw/zh/datasets/ · 核实: 分片重组逐字节校验通过(2026-10-11) - E 级 · 本项目实测
Router CSI Lab — GL-MT6000 (MT7986) Wi-Fi CSI dataset, 10 s sample + 10 min capture
Router CSI Lab · 2026
csi.okwujun.pw/zh/datasets/ · 核实: CC BY 4.0, SHA-256 published; DOI (Zenodo) pending