256 个 CSI 子载波,实际有几个自由度?GL-MT6000 双抓包冗余审计
作者 Wu Jun · 更新于 2026-11-01 · Wi-Fi CSI, 子载波冗余, PCA, 有效维度, GL-MT6000, MT7986 · 约 7 分钟
结论先说: 在本次 GL-MT6000 的 10 分钟幅度抓包中,256 个数组位置不是 256 个 独立观测维度。对逐快照归一化后的幅度做相关矩阵 PCA,6 个主成分解释 90% 方差, 9 个解释 95%,20 个解释 99%;参与率有效维度为 4.568732。相邻子载波的相关系数 中位数为 0.900779。这不是“路由器只有 6 个传感器”的物理结论,而是这两段幅度数据 在当前预处理下的统计维度结论。
图 1:左上为两段抓包的归一化幅度轮廓;右上为 256 × 256 相关矩阵的 4 × 4 分块平均; 左下为 10 分钟数据的 PCA 累积方差;右下为绝对非对角相关系数分布。图由公开脚本生成。
1. 结果总表
两段数据都固定选择 tx0/rx0,不回退到其他链,也不把多个 tx/rx 记录当成更多时间样本
[1]。
| 指标 | 10 分钟抓包 | 60 秒抓包 |
|---|---|---|
| 外层记录 | 57,293 | 2,777 |
| bit15 闭合组 | 7,609 | 347 |
完整 256-bin、tx0/rx0 行 |
7,608 | 347 |
| 不完整固定链组 | 1 | 0 |
| 90% 累计方差所需主成分 | 6 | 不用于选维 |
| 95% 累计方差所需主成分 | 9 | 不用于选维 |
| 99% 累计方差所需主成分 | 20 | 不用于选维 |
| 参与率有效维度 | 4.568732 | 不用于选维 |
| 第一主成分方差占比 | 33.933% | 不用于选维 |
| 前 10 主成分累计方差 | 96.858% | 不用于选维 |
| 非对角相关系数绝对值中位数 | 0.204452 | 不用于选维 |
| 相邻 bin 相关系数中位数 | 0.900779 | 不用于选维 |
abs(r) >= 0.75 的 pair 比例 |
17.451% | 不用于选维 |
abs(r) >= 0.90 的 pair 比例 |
10.064% | 不用于选维 |
10 分钟主数据用于 PCA 维度选择;60 秒数据只用于检查同一结构是否再次出现,不用它反过来 挑选主成分数量,避免把测试 session 泄漏进模型选择。
2. 为什么“有 256 列”不等于“有 256 个自由度”
CSI 的一帧常被摊平成 256 维向量。很多模型随后默认每列相互独立,或按普通表格列做特征选择。 但相邻频率位置会共享发送端、接收端、多径路径、自动增益和数据装载结构;仅凭列数不能判断 独立信息量 [2] [3]。
这不是语义争论,而会影响:
- 线性模型的参数数量与共线性;
- 树模型和神经网络对冗余特征的偏好;
- 训练集与测试集划分后是否真正独立;
- 把 256 列全部展示时,读者是否误以为看到了 256 个物理传感器;
- 压缩、存储、推理延迟和边缘设备预算。
PCA 不证明相关性的物理来源,只给出当前矩阵中方差如何分布 [4]。本文因此 只报告“相关结构”和“统计有效维度”,不报告“物理上只有几个子载波”。
3. 数据选择与预处理
步骤如下:
- 按外层容器
<float64 ts><uint16 len><payload>遍历; - 按
chain_infobit15 闭合测量组; - 只选择
tx0/rx0;缺链或重复链计数后跳过,绝不自动换链; - 只接受 256 个复数对、I/Q 非全零的记录;
- 每个 256-bin 幅度向量除以自身中位数,去掉共享增益的一阶变化;
- 对每个 bin 在时间轴上中心化并缩放到单位标准差;
- 对 256 × 256 Pearson 相关矩阵做特征分解;
- 以累计方差首次达到 90%、95%、99% 的成分数作为维度门槛;
- 另报告参与率有效维度:
effective_rank = (sum(eigenvalues)^2) / sum(eigenvalues^2)
10 分钟数据中,7,609 个闭合组有 7,608 个完整 tx0/rx0 行,另有 1 个组不是完整 256-bin
固定链样本;60 秒数据 347 个闭合组全部可用。输入文件 SHA-256 分别为
527466ceb8b5f835e55ff348f02808736b947db39e7baac1f34e375de146a440 与
41c35d9d23e5c03ddd34ae97617e772fecdb55e8545156181828b060605a87a6。
4. 相关结构不是“全部很高”,而是分层的
256 个 bin 的 32,640 个非对角 pair 中,绝对相关系数中位数只有 0.204452;只看这个数, 很容易得出“子载波大体独立”的错误印象。分布的上尾完全不同:
- p95 的
abs(r)为 0.960370; - 17.451% 的 pair 达到
abs(r) >= 0.75; - 10.064% 的 pair 达到
abs(r) >= 0.90; - 相邻 bin 的相关系数中位数为 0.900779,平均绝对相关为 0.856893。
所以更准确的说法是:邻近位置形成强相关结构,远距离位置大多不相关,整体并非一个均匀的 256 × 256 相关块。低中位数与低 PCA 维度并不矛盾;特征值主要由少数强结构方向贡献。
这张相关矩阵不能用来给 bin 分配物理频率。数组索引到 OFDM 子载波、导频、保护带或资源单元的 映射需要驱动和固件级证据,当前数据没有完成这一步。
5. PCA 的 6 / 9 / 20 维度门槛
10 分钟相关矩阵的前几个特征值为:
| 主成分 | 方差占比 | 累计方差 |
|---|---|---|
| 1 | 33.933% | 33.933% |
| 2 | 25.669% | 59.602% |
| 3 | 16.927% | 76.528% |
| 4 | 6.754% | 83.283% |
| 5 | 5.088% | 88.370% |
| 6 | 3.670% | 92.041% |
| 7 | 1.477% | 93.518% |
| 8 | 1.415% | 94.934% |
| 9 | 1.194% | 96.127% |
| 10 | 0.730% | 96.858% |
因此:
- 若目标是保留 90% 方差,6 维比 256 维少得多;
- 95% 需要 9 维;
- 99% 需要 20 维;
- 参与率只给 4.568732,因为它更强调最大的特征值,不等同于 90% 门槛;
- 任何降维都会丢掉尾部方差,是否可接受必须由下游任务和独立验证决定。
不能说这 6 个主成分就是“6 条物理路径”。PCA 旋转只保证在平方误差意义下按方差排序, 不保证成分可解释或跨设备对齐。
6. 60 秒抓包是否重现同一结构
把两段数据分别按自身 256-bin 中位数归一化后,比较每个 bin 的中位幅度轮廓:
- Pearson 相关:0.954781;
- 时间 CV 轮廓相关:0.984305;
- 中位幅度轮廓的平均 L1 差:0.267042。
这说明 bin 之间的相对结构在这两段抓包里高度相似。但绝对增益并不相同,不能把轮廓相关 解释成绝对幅度或链路预算不变。
逐 bin 时间变异分布也很不平均:
| 指标 | 10 分钟 | 60 秒 |
|---|---|---|
| CV 最小值 | 0.087431 | 0.056579 |
| CV p25 | 0.173107 | 0.102854 |
| CV 中位数 | 0.248880 | 0.135704 |
| CV p75 | 9.274449 | 7.475848 |
| CV p95 | 10.816894 | 7.849462 |
| CV 最大值 | 12.641809 | 8.561378 |
CV > 1 的 bin 比例 |
37.891% | 36.328% |
这是一个明显的偏斜分布;高 CV 不等于坏数据,也不等于高感知灵敏度。它可能来自局部零陷、 增益变化、多径和装载结构。文章保留原始 bin 指标,不按 CV 擅自删除样本。
10 分钟数据中,127 个 bin 至少出现过一次零幅度,共约 400 个零 bin 观测,最大单 bin 零值 比例约 0.131%;60 秒数据为 47 个 bin、约 55 个观测,最大比例约 0.576%。数量很小但并非零, 因此解析器仍应显式处理,而不是除以零或静默填数。
7. 对建模和实验设计的直接影响
更稳妥的做法是:
- 把“256 维输入”描述为高冗余的原始表示,不描述为 256 个独立传感器;
- 在每个 session 内报告相关系数和有效维度;
- 如果做 PCA 或其他降维,维度只在训练 session 选择;
- 用未见 session 或未见房间验证,而不是把同一段数据随机切两半后宣布泛化;
- 对树模型、线性模型和神经网络比较原始 256 维与低维表示,而不是假定降维必然更好;
- 保留 bin 身份、预处理和特征值谱,避免只发表一个“准确率”。
“6 个主成分解释 90%”不等于“所有任务都只需 6 个特征”。如果目标依赖尾部弱信号、特定导频 或局部零陷,压缩可能丢掉关键信息。正确问题是:在当前任务和独立测试集上,丢掉多少尾部方差 是允许的。
8. 复现
下载公开 10 分钟抓包与 60 秒演示源后运行:
python3 analyze_csi_subcarrier_redundancy.py \
csi_udp_20261010_10m.anon.bin \
csi_demo_60s_anonymized.bin \
--out-dir csi-subcarrier-redundancy \
--img csi-subcarrier-redundancy.svg
脚本只依赖 Python 3.9+ 和 NumPy。公开文件:
数据集页见 GL-MT6000 Wi-Fi CSI 数据集;链完整性见 CSI 链健康审计;时间空档的频谱影响见 CSI 长空档频谱代价。
9. 证据边界
本文属于 E 级一手复现 [5],PCA 方法语境参考同行评审综述 [4]。它不证明:
- 某个数组索引一定对应某个 OFDM 子载波、导频或物理天线;
- 相关性的唯一物理原因;
- 另一台 GL-MT6000、另一版固件、另一个房间或客户端会得到相同 4.568732 维度;
- 这些主成分可以直接用于呼吸、跌倒、存在、身份或医疗判断;
- 低维表示一定会提高任何分类器的准确率。
两份数据都缺少空场基线、已知动作、受试者位置和人体事件 ground truth。这个实验只能支持 幅度冗余审计、维度报告和更严格的实验设计。
10. 验收清单
- 明确固定链,缺链时不要静默回退;
- 报告每段抓包的闭合组与有效行数;
- 说明逐快照归一化和逐 bin 标准化;
- 同时报告相关系数分布与特征值谱;
- 用独立 session 检查结构是否重现;
- 维度选择只使用训练 session;
- 给出脚本、JSON、逐 bin CSV、特征值 CSV、图和 SHA-256;
- 不把统计维度解释成物理传感器数量。
参考与数据来源
本文的每条外部结论都标注来源与证据等级(分级标准);标注 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,两者不可混用。 - A 级 · 标准/综述
WiFi Sensing with Channel State Information: A Survey
W. Ma, W. Zhou, X. Wang · ACM Computing Surveys · 2019
doi:10.1145/3310194 · 被引 857 · 核实: CrossRef API, 2026-10-11 · 领域内最常被引用的 CSI 感知综述(被引 857 次,核实于 CrossRef)。 - B 级 · 同行评审
Tool release: gathering 802.11n traces with channel state information
D. Halperin, W. Hu, A. Sheth, D. Wetherall · ACM SIGCOMM Computer Communication Review · 2011
doi:10.1145/1925861.1925870 · 被引 1713 · 核实: CrossRef API, 2026-10-11 · Intel 5300 CSI Tool 的正式论文(被引 1713 次),是 CSI 采集被广泛复现的起点。 - B 级 · 同行评审
Principal component analysis: a review and recent developments
I. T. Jolliffe, J. Cadima · Philosophical Transactions of the Royal Society A · 2016
doi:10.1098/rsta.2015.0202 · 被引 7798 · 核实: CrossRef API, 2026-11-01 · PCA 的同行评审综述,覆盖方差解释、降维和解释边界。本文只用其方法定义,不把相关结构解释为物理因果。 - E 级 · 本项目实测
CSI subcarrier redundancy and effective-dimensionality audit (script, metrics, PCA spectrum)
Router CSI Lab · 2026
okwujun.pw/zh/csi-subcarrier-redundancy/ · 核实: From the public 10-minute and 60-second captures with input SHA-256 527466ce…a440 and 41c35d9d…87a6; script, JSON, CSVs and figure published together (2026-11-01) · 只证明这两段幅度抓包中的相关结构与有效维度,不把数组索引映射为物理频率,也不提供人体真值。 - E 级 · 本项目实测
Router CSI Toolkit — 采集/分析/守护脚本(MIT,公开仓库)
Router CSI Lab · 2026
github.com/jjjwu/router-csi-toolkit · 核实: GitHub API 于 2026-11-02 核实公开仓库、抓包质量预检、成功 CI 与 v0.1.3 Release;归档 SHA-256 为 59f144c0…adea7 · 公开版含无第三方依赖的抓包质量预检;网页端检查器使用同一容器定义和边界口径。