Cadence lock:为什么手表显示的是你的步频而不是心率

光学心率计的有用信号只占反射光的 1–2%,而落地冲击会同时从三个方向打击它。我们来看看为什么跑间歇时心率会「卡」在 180,以及为什么这不是刷固件能解决的问题。

OM
Olga Marchenko

熟悉的场景:你开始跑间歇,加速起来——手表显示心率 178 次/分。你看向屏幕的第二个数据栏:步频 178 步/分。再跑一组——心率 180,步频 180。吻合得完美,也可疑,因为现实中不会这么巧。这就是 cadence lock,光学心率监测最常见的失效模式。它的根源不在于固件糟糕,而在于物理。

有用信号离噪声只有一线之隔

光学心率计(光电容积脉搏波描记法,PPG)用 LED 向皮肤发光,再用光电二极管接收反向散射回来的光。信号由两部分组成。

直流(DC)分量是庞大而缓慢的背景:皮肤、骨骼、肌肉、静脉血以及动脉血中非搏动部分对光的吸收。交流(AC)分量则是与心跳同步的微小波动:收缩期动脉血容积增加、吸收上升,舒张期则下降。

而下面这个关键数字决定了其余的一切:AC 分量只占总光吸收的 1–2%。AC 与 DC 之比称为灌注指数,本质上就是有用信号强度的度量。手腕处的灌注指数很低:血管少、位置深,所以手腕天生就是一个「嘈杂」的位置。

实际含义很简单。有用信号坐在巨大背景的顶端,只占它的百分之几。任何幅度相当的扰动都会把它盖住。正是在这一点上,PPG 与胸带存在原理性的差别:心电图直接测量心脏的电位,而不是试图在反射光里辨认那百分之二的涟漪。

落地冲击同时从三个方向打击信号

脚掌落地以及沿肢体向上传播的冲击波,制造出的不是一种干扰,而是同时好几种。

传感器相对皮肤的位移。 每一次落地,贴合不紧的传感器都会发生微观尺度的滑移。「LED—组织—光电二极管」的几何关系、入射角和光程长度都随之改变;外界光线还会从缝隙里渗进来。这是其中最强的机制,也是唯一一个你能通过收紧表带完全控制的机制。

接触压力的波动。 冲击会调制压紧力,而传感器下方血管床的容积正取决于压紧力。这里有个微妙之处:脉搏波幅度在跨壁压接近零时最大——也就是外部压紧力大致等于平均动脉压、血管壁被「卸载」的时候。每一步带来的压力振荡会让工作点在非线性的顺应性曲线上来回移动,于是脉搏波的波形开始随着步伐起舞。

静脉血。 安静状态下,静脉血属于静止的背景。而在震动中,顺应性很高的静脉床开始出现容积波动——由此产生一种寄生搏动,它同步的不是心跳,而是动作。

此外,冲击波本身还会调制传感器下方微循环床里的血流。也就是说,被扭曲的不只是光学环节,还有被测对象本身。而所有这些干扰都具有同一个频率——步频

为什么算法治不好它

大多数算法在频域里寻找心率:取一段信号窗口,计算频谱,选出占主导的峰。

现在来算一下。步频 160–190 步/分就是 2.7–3.2 Hz。心率 160–190 次/分同样是 2.7–3.2 Hz。两个信号还都有丰富的谐波结构。当两个峰靠到一起时,算法看到的是两个相邻的极大值,而运动产生的那个峰几乎总是更高——毕竟有用信号只有 1–2%,而落地带来的机械干扰非常强。算法老老实实地取走更大的峰,于是就锁在了步频上。

这是原理性的限制,而不是做工不到位:当两个量在物理上具有相同的频率时,单通道内的任何频域方法都无法把它们分开。把步频的频谱减掉,同时也就把心率减掉了。

人们想出了很多对策:把加速度计作为参考信号、自适应滤波、谱减法、TROIKA 与 JOSS 算法(宣称的平均误差分别为 2.34 和 1.28 次/分)、多通道与多波长传感器。之所以采用约 525 nm 的绿光,正是因为它穿透较浅,AC/DC 比优于红光和红外光。这些方法都有效——前提是心率和步频还能区分开。而在两者重合的那个点上,所有方案都留有盲区。

遗憾的是,这个点恰好落在数据最需要的地方:阈值配速和间歇配速。加速时,冲击信号的强度在增大,同时心率也在向步频靠拢。

为什么小腿是最糟糕的传感器位置

冲击负荷自下而上急剧衰减。在对精英青少年长跑运动员以 14–16 km/h 速度跑动时用惯性传感器同步测量,结果是:

  • 胫骨:14 ± 3 … 16 ± 3 g
  • 骶骨:4 ± 1 … 5 ± 1 g(约为小腿负荷的 32%);
  • 肩胛骨:4 ± 1 g(约 27%)。

也就是说,小腿承受的冲击大约比肩带强 3.5–4 倍,冲击波在向上传导的途中有近四分之三被吸收掉了。

原因有几个。胫骨表面几乎没有肌肉充当阻尼器——冲击波毫无衰减地传进传感器,而肩部的软组织层要厚得多。腿部软组织的固有频率大致落在 10–50 Hz 范围内,落地冲击会直接激发它们。而随着疲劳积累,肌肉的阻尼能力下降,长距离比赛后段小腿处的加速度还会上升。

直接比较也证实了这一点。在一项独立验证中,三个相同的传感器被同时戴在手腕、前臂和上臂上,上臂位置稳定优于其余位置。戴在上臂的 Polar Verity Sense 在轻松跑时的 MAPE 约为 0.69%,而腕式设备跑步时的误差通常要高出一个量级:在一项针对心脏病患者的验证中,跑步的 MAE 为 12.1 次/分、MAPE 为 8.5%——相比之下步行为 3.8%,安静状态下通常只有 1–3 次/分。

该怎么办

  • 需要真实的心率,就用胸带。 心电图直接测量心脏的电活动,原理上不会出现 cadence lock。如果你在动态条件下需要优于 ±5 次/分的精度,没有别的选择。
  • 受不了胸带,就把光学传感器戴到上臂或前臂。 那里的冲击小好几倍,血流更稳定,误差接近胸带。
  • 绝不要把光学传感器戴在小腿上。 这是所有可能位置中最糟糕的一个。
  • 如果戴手表,就把表带收紧。 紧密贴合可以消除产生伪迹的主要机制。把手表往上挪到腕骨上方一点的位置;天冷时先把手腕捂热:血管收缩会降低灌注,让锁频更容易发生。
  • 把步频和心率并排显示出来。 如果两个数字粘在了一起,这些数据就不能信。
  • 事后复查。 把心率曲线叠加到步频曲线上。如果在间歇、加速和下坡处两条线重合,那是伪迹的标志,而不是心脏动力学的表现。别让这样的训练记录毁掉你的负荷和恢复计算。
  • 了解自己的风险区间。 如果你的步频较高(约 180 步/分)而工作心率也高(约 180 次/分),你就属于高风险人群。如果两者在频率上离得较远,光学传感器出错的概率会明显降低。

注意事项

冲击负荷的绝对数值取决于速度、落地技术、鞋子、路面和疲劳程度——这里稳定成立的是「小腿远大于肩部」这个比例关系,而不是具体数字。关于手腕处峰值冲击加速度,几乎没有可靠的已发表数据,因此手腕与小腿的对比应视为定性的。厂商的具体算法并不公开:文中描述的方法属于已发表的科学基础,而不是经过证实的某款固件的内容。文中给出的误差数值来自特定人群中的特定研究——它们说明的是量级以及不同活动之间的差异,而不是普适常数。

要点

  • PPG 的有用信号只占总光吸收的 1–2%,其余全是背景。
  • 落地冲击同时产生三种干扰:传感器位移、接触压力波动和静脉血搏动——而且都落在步频上。
  • Cadence lock 是物理问题: 160–190 步/分的步频和 160–190 次/分的心率对应的是同样的 2.7–3.2 Hz,用频域方法无法分开。
  • 小腿承受的冲击比肩部大 3.5–4 倍(14–16 g 对 4 g)——是光学传感器最糟糕的位置。
  • 方案的优先级:胸带 → 上臂或前臂 → 收紧的手表
  • 诊断方法:心率与步频重合,数据就不可靠

来源:Ueberschär O. 等,「Measuring biomechanical loads and asymmetries in junior elite long-distance runners through triaxial inertial sensors」,Sports Orthopaedics and Traumatology,2019,转载于 Sheerin K. 等的综述「The measurement of tibial acceleration in runners」,Gait & Posture。https://www.sciencedirect.com/science/article/abs/pii/S0949328X19301449. Zhang Z., Pi Z., Liu B.「TROIKA: A General Framework for Heart Rate Monitoring Using Wrist-Type Photoplethysmographic Signals During Intensive Physical Exercise」,IEEE Transactions on Biomedical Engineering,62(2):522–531,2015. Zhang Z.「Photoplethysmography-Based Heart Rate Monitoring in Physical Activities via Joint Sparse Spectrum Reconstruction」,IEEE Transactions on Biomedical Engineering,62(8):1902–1910,2015. Cheng D. 等,腕式光电容积脉搏波描记法验证研究,European Heart Journal — Digital Health,6(5):1024,2025.