在线演示:真实 CSI 幅度热图回放(256 子载波)
作者 Wu Jun · 更新于 2026-10-11 · 约 3 分钟
下面这段回放用的是真实抓包(GL-MT6000 / MT7986,5GHz HE80,256 子载波,约 60 秒), 浏览器只加载完整测量组的降采样版本(347 帧 × 64 个子载波)以便流畅播放。原始记录为 2,777 条链记录 / 347 个 bit15 完整组 / 1 条未闭合尾部记录;脱敏源文件与采集方式公开 [1] [2]。
← 时间纵轴:子载波(下=低频,上=高频)
绿线:逐测量运动指标(相邻测量幅度变化均值)蓝线:当前播放位置
怎么看这张图
幅度热图视角(默认)
- 横轴是时间,纵轴是子载波;颜色越亮表示该子载波在该时刻的幅度越大;
- 有人走动时,热图会出现竖向的亮暗带(多径被扰动);静止没人时趋于平稳;
- 颜色是按子载波归一化后的相对幅度,不是绝对功率——不同环境的绝对值不可直接比较。
多普勒 / 时频谱视角
- 对同一份数据做 STFT(短时傅里叶变换):纵轴是多普勒频率 0 → Nyquist,颜色越亮表示该频率上能量越强;
- 多普勒图的颜色是相对能量:先减去逐频率的静止背景(常驻谱线),再做分位数归一化,因此它突出的是随时间变化的能量,不是绝对功率;
- 由图可见运动能量集中在低频(身体缓慢摆动、呼吸引起的信道起伏),静止段整体偏暗;
- 重要限制:这条数据的完整组测量率约 5.79 次/秒,所以可观测的多普勒范围只有 0–2.89 Hz(Nyquist = 测量率 / 2)。 它足够看呼吸与慢速运动,但不是行走多普勒谱——要看到步行速度对应的多普勒,需要显著更高的测量率或专用雷达。
下面那条绿线在两个视角下都显示,是运动指标(相邻测量幅度变化均值),可以直接当"有没有在动"的廉价判据。
这条数据是怎么来的
| 项目 | 值 |
|---|---|
| 采集设备 | GL.iNet GL-MT6000(MT7986A + MT7976),OpenWrt + mt76 CSI |
| 频段/带宽 | 5GHz / HE80 / ch44 |
| 子载波/链路 | 256 / 2Tx × 4Rx |
| 测量率 | 约 5.79 个完整组/秒(→ 多普勒可观测上限 0–2.89 Hz) |
| 原始数据 | 2,777 条链记录 / 347 个完整组 / 1 条尾部残片,2.8MB,SHA-256 已公开 |
| 浏览器内 | 幅度 347 帧 × 64 子载波;多普勒 347 帧 × 32 频率格(同一时间轴,逐频率背景扣除 + 分位数归一化) |
| 完整性 | 只使用 bit15 闭合的完整测量组,尾部未闭合记录不参与播放 |
这份回放能说明什么
| 可以 | 不可以 |
|---|---|
| 看到同一份真实抓包随时间的幅度变化 | 证明某个模型在所有房间都准确 |
| 检查解析、降采样和可视化是否一致 | 把颜色当绝对 dBm 或绝对功率 |
| 观察低速运动/呼吸频段的相对能量 | 从 5.79Hz 采样恢复步行微多普勒 |
| 用公开 SHA-256 验证源文件未变 | 把“未检测到运动”当成“房间无人” |
浏览器没有连接你家路由器,也不会上传数据;所有画面都在本地由静态资源计算。 如果只想验证解析器,先下载 10 秒样例;如果要重算本页统计,使用上方 60 秒源文件和 manifest。
想自己复现这条链路:复现教程 · Python 处理 · 工具与数据
参考与数据来源
本文的每条外部结论都标注来源与证据等级(分级标准);标注 E 级的是本项目可复现的实测数据。
- E 级 · 本项目实测
本项目 10 分钟实测抓包(57,293 条 / 600.0 s,SHA-256 00373f83…95e2)
Router CSI Lab · 2026
okwujun.pw/zh/datasets/ · 核实: 分片重组逐字节校验通过(2026-10-11) · 本地原始母片 SHA-256 为 00373f83…95e2;公开下载的是去标识派生文件,SHA-256 为 527466ce…a440,两者不可混用。 - E 级 · 本项目实测
Router CSI Lab — GL-MT6000 (MT7986) Wi-Fi CSI dataset, 10 s sample + 10 min capture
Router CSI Lab · 2026
doi:10.5281/zenodo.23434789 · 核实: CC BY 4.0;SHA-256 已发布;Zenodo DOI 10.5281/zenodo.23434789 · 数据集已获 Zenodo DOI(10.5281/zenodo.23434789),可直接引用。