FFT 是什么:脉诊量化为什么从这里开始,又为什么卡在这里
学习资源 | 频域分析入门
为什么脉诊研究绕不开 FFT
过去三十年,几乎所有试图量化脉诊的研究团队,都选了同一个数学工具:快速傅立叶转换(FFT)。王唯工用它、郭育诚用它、大多数脉诊仪的讯号处理管线里都有它。这不是偶然——FFT 是目前已知最高效的方式,把一段复杂的波形压缩成一组数字,让统计比较成为可能。
但工具的选择不是中性的。每个工具都有它的假设,假设之外的东西,它结构性地看不见。理解 FFT 在做什么、不做什么,是判断所有频域谐波分析研究的起点。
棱镜:从混合到分解
白光穿过棱镜,分解成彩虹——许多频率的光混在一起,棱镜把它们拆开,让你看到每种频率各有多强。
FFT 对脉搏波做的事一模一样。从这里开始,你需要先熟悉一个词:频率。
频率,就是「每秒重复几次」。心跳每秒约 1.2 次,这个 1.2 Hz 就是脉搏的基本频率。声音也是如此:钢琴中央 A 每秒振动 440 次,即 440 Hz。
FFT 的两个端点:
- 输入:一段在时间上起伏的讯号(感测器记录到的脉搏波)
- 输出:一张频谱图——这段讯号里,每个频率各占多少比重
棱镜分解光的颜色,FFT 分解波形里的周期性振动成分。
正弦波:频率的基本单位
这里有一个问题值得停下来想:分解成什么形状?
答案是正弦波。不是三角波,不是方波,不是其他形状。这不是数学的任意选择,而是因为正弦波有一个独特性质:它是唯一只含有单一频率的波形。
其他所有形状,本身就已经是多个频率的混合。方波看起来简单,但 FFT 分析后,它其实是 1 Hz + 3 Hz + 5 Hz + 7 Hz + ……无穷多个奇数倍频的叠加。锯齿波也一样。只有正弦波,FFT 只看到一根柱。
这就是为什么用正弦波来做分解:它是频率的「原子」,最小的纯粹单位。把复杂波形拆成正弦波的组合,等于找出它「由哪些频率建造」。
一个具体的例子:
用长笛和小提琴同时演奏 A4(440 Hz)。时域波形看起来完全不同——长笛接近平滑的正弦波,小提琴锯齿状粗糙。但两者的 FFT 都会在 440 Hz 出现一根高柱。差别在于:长笛几乎只有 440 Hz,小提琴还有 880 Hz、1320 Hz、1760 Hz……一排泛音(harmonics)。相同的音高,不同的音色,正是来自泛音比例的不同。
心跳波形和小提琴一样,不是纯正弦波,所以 FFT 分解后会出现基频的整数倍——这些就是王唯工所说的 C1、C2、C3……谐波。
谐波:心跳波形的频率组成
心率 72 bpm 时,基频约 1.2 Hz。FFT 把脉搏波分解成基频的整数倍:
| 谐波 | 频率(72 bpm) | 王唯工理论的脏腑对应 |
|---|---|---|
| C0 | 0 Hz(直流分量) | — |
| C1 | 1.2 Hz(基频) | 肝 |
| C2 | 2.4 Hz | 肾 |
| C3 | 3.6 Hz | 脾 |
| … | … | … |
| C10 | 12 Hz | — |
这张「各频率的强度清单」就是谐波频谱。王唯工理论的核心假设,是这些频率分量可以对应中医脏腑的共振能量。这个对应是否成立,是另一个问题——但不管对应成不成立,FFT 本身的数学性质已经决定了它能告诉你什么、不能告诉你什么。
注意:如果心率从 72 bpm 加快到 80 bpm,C1 的位置从 1.2 Hz 移到 1.33 Hz,所有谐波都跟着平移。同一个人,心率不同,谐波的频率位置就不同。这让跨时间点的比较变得复杂。
互动示范:波形是叠加,频谱是拆解
下面的合成器做的事,是 FFT 的反方向——把分解后的谐波「加回去」,看它们如何叠成一条脉搏波形。这让你亲眼看到「频率分解」的意思。
在你操作之前,先记住你要从这个示范理解的两件事:
○ 复杂波形 = 多个正弦波的叠加 每条彩色细线是一个谐波(一个正弦波),白色粗线是它们全部加起来的总和。真实的脉搏波形就是这条白线。
○ 振幅决定频谱,相位决定形状——FFT 只看振幅 改变振幅(高度):白线形状改变,频谱柱也跟着高低变。 改变相位(左右平移):白线形状大幅改变,但频谱柱完全不动。 这是 FFT 的核心盲点:两条看起来完全不同的脉搏波形,可能有完全相同的 FFT 频谱。
试这三步:
- 点「纯正弦波」:只有 C1 一条彩色线,白色总和与它完全重叠——最纯粹的单频率讯号
- 点「典型脉波」:C1–C8 同时出现,中段八条彩线各自振动,白线是它们的叠加总和——这就是多个谐波合成脉搏形状的过程
- 把 C2 的「相位」滑杆向右拉:看白线形状大幅改变——但下方频谱的 C2 柱高度完全不动
图中各色细线是 C1–C8 各自的正弦波,白色粗线是它们的总和——也就是脉搏波形。FFT 做的事正好相反:从已知的白色波形,反推每条细线的高度(振幅)和左右位移(相位)。振幅对应频谱柱的高度;相位决定波形细节形状,却不出现在 FFT 的输出里。
频率解析度:截多长的讯号,决定你能分辨多细
FFT 有一个基本的数学限制:频率解析度 = 1 ÷ 讯号长度(秒)。
这意味着什么?
| 截取长度 | 频率解析度 | 能分辨 C1 和 C2 吗? |
|---|---|---|
| 1 秒 | 1 Hz | × 无法(C1 和 C2 相差 1.2 Hz,在 1 Hz 解析度下几乎糊在一起) |
| 5 秒 | 0.2 Hz | △ 勉强 |
| 10 秒 | 0.1 Hz | ○ 清晰 |
看起来应该截愈长愈好。但这里有一个脉诊特有的困境:
10 秒的录音里,心率可能已经从静息的 1.2 Hz 缓慢升到 1.3 Hz。C1 的位置在这 10 秒里持续漂移,FFT 会把这个漂移叠加成一个展宽的模糊峰,而不是一根清晰的柱。讯号截愈长,频率解析度理论上提高,但如果讯号本身不稳定,实际看到的频谱反而更模糊。
这个矛盾——解析度需要长讯号,但长讯号让非稳态问题恶化——是频域脉诊的核心工程困境之一,换更好的感测器解决不了它。
FFT 结构性地看不见什么
FFT 有一个不可回避的数学前提:它假设你分析的那段讯号,在整个观测区间里是稳定的、重复的。 它计算的是「这段时间里,平均而言,各频率成分各有多强」——本质上是一台时间平均机器。
这个前提带来三个盲点,每一个都直接影响脉诊的量化能力:
瞬时事件被平均掉
30 秒录音里有一次漏搏(心跳偶尔停了一拍),FFT 把这个瞬时异常均摊到整段时间,在频谱上几乎看不见。但中医脉学的「结、代、促」脉——定义恰恰是瞬时的节律突变。FFT 对这类讯号结构性地失明。
波形的几何形状消失
每次心搏的波形有独特的形状:上升多快、主峰多宽、有没有重搏切迹、下降多缓。如你在示范中看到的,改变相位不改变频谱——这意味着 FFT 输出相同频谱的两段波形,可能有截然不同的形状细节。传统脉象的弦、滑、细、涩,描述的恰恰是触觉经验中的「形状」与「质地」。
分析的是整段,不是每一拍
FFT 输出「这段录音」的频谱,不是「第 7 拍」或「深呼吸后那几拍」的频谱。如果你想知道某个特定瞬间的脉象变化,FFT 只能告诉你整段的平均。
错位:脉搏不是 FFT 最适合的讯号
问题不是 FFT 本身坏——对稳定周期讯号,它是最好的工具之一。问题是脉搏不是稳定周期讯号。每一搏都受神经、体液、情绪的即时调节,是非线性的、动态的、逐拍变化的。FFT 假设它是稳定的、均质的。
这个错位不是工程问题。换更好的感测器、收更大的样本、提高采样率——都不会让 FFT 开始看见它数学上看不见的东西。
更准确地说,选择用 FFT 来分析脉搏,本身就是一个理论决定——你假设脉搏的本质可以用「频率成分的强弱」来描述。这不是中性的观察,而是一种理论投射:把一个多维的生理现象(形状、节律、深浅、质地),压缩到频率空间里的一组数字。投射过程中丢失的资讯,不是分析精度能补回来的——那些资讯从数学上就不存在于 FFT 的输出中。
小结
| FFT 的假设 | 脉搏的实际性质 | |
|---|---|---|
| 稳定性 | 讯号在观测区间内平稳 | 逐拍变化,受即时调节 |
| 周期性 | 严格的周期重复 | 有节律但非严格周期 |
| 输出维度 | 频率能量分布(一维) | 形状、质地、深浅、节律(多维) |
| 时间解析度 | 整段平均 | 临床关注瞬时事件 |
| 相位资讯 | 存在但通常不报告 | 决定波形形状细节 |
FFT 是脉诊量化的起点——它让「把脉搏变成数字」第一次成为可能。但它也是一个有明确边界的工具。带着这张表,再去阅读频域谐波分析的研究文献,你会更容易看出每篇研究的假设藏在哪里,以及它的结论能走多远。
频域谐波能描述多少传统脉象?这两套语言的座标轴是否平行?这是下一个值得追问的问题。
延伸阅读
- 频域谐波与传统脉象:两套描述系统的根本差异——即使 FFT 完全精确,谐波能量和浮沉弦滑之间的座标轴也不平行
- 频域脉诊的三个物理瓶颈——FFT 应用于脉诊的结构性问题,从物理层面展开
- 血液循环共振理论(二):三十年的文献,为什么没有成为科学脉诊的主轴?——40 篇研究的文献整理,这条路走到哪里
- 频域谐波分析常见问答——演算法、AI、脏腑对应、临床定位的 12 个核心问题
本文为 TCMpulse 学习资源系列。如有勘误或补充,欢迎透过 contact@tcmpulse.com 联络。