2、时域与频域基础:信号表示、时域波形与频谱的关系,为什么需要频域分析

TinyML 设备(如振动传感器、麦克风、加速度计)采集到的原始信号,本质上是一串随时间变化的数值序列。绝大多数工程师的第一反应是直接查看这段波形——看幅值、看周期、看有没有“毛刺”。这种在时间轴上观察信号的方式称为时域分析,它直观、易于实现,但在处理故障特征时往往力不从心。一个微弱的轴承早期损伤信号,可能完全淹没在正常的振动背景中;两个频率接近的信号叠加后,时域波形看起来只是一个“变粗”的正弦波,肉眼无法分辨。要解决这类问题,必须将信号从时间轴转换到频率轴,即进行频域分析。本章将系统讲解信号在时域与频域中的表示方法、二者之间的数学关系,以及为什么频域分析是 TinyML 故障特征提取的基石。

时域与频域:同一信号的两个观察维度 时域表示 • 横轴:时间 t(秒/毫秒) • 纵轴:幅值(电压/g/Pa) • 直观反映信号强度与变化快慢 • 适合观察冲击、削顶、间歇性异常 • 多频率叠加时难以分离成分 频域表示 • 横轴:频率 f(Hz/kHz) • 纵轴:幅值/功率密度 • 清晰显示信号由哪些频率成分构成 • 微弱特征在特定频点可被放大观察 • 丢失时间信息,需结合时域使用 FFT / DFT 核心关系:时域波形 = 多个正弦波的叠加 时域:x(t) = A₁sin(2πf₁t) + A₂sin(2πf₂t) + ... 频域:X(f) = 各频率分量的幅值谱 f₁ f₂ f₃ f₄ f₅ FFT 将时域采样序列变换为频域离散谱线,是 TinyML 特征提取的核心数学工具

上图展示了时域与频域对同一物理信号的不同观察方式。时域波形是信号最原始的存在形式,而频谱则揭示了信号内部的频率构成。对于 TinyML 故障诊断而言,频域分析的核心价值在于:故障往往对应特定的频率特征。例如,滚动轴承的内圈故障特征频率约为 3.5 倍转频,齿轮断齿的特征频率为啮合频率及其边带。这些频率成分在时域中可能被噪声掩盖,但在频谱中却清晰可辨。

2.1 信号表示:从连续时间到离散序列

在嵌入式系统中,传感器输出的物理量(振动加速度、声压、电流)首先经过采样保持电路,被转换为离散时间序列。设采样频率为 fs,采样间隔 Δt = 1/fs,则连续信号 x(t) 被表示为离散序列 x[n] = x(n·Δt),其中 n = 0, 1, 2, ..., N-1。N 为采样点数,决定了频率分辨率 Δf = fs/N。

这里有一个关键约束:奈奎斯特采样定理要求采样频率必须大于信号最高频率成分的两倍,否则会发生混叠(Aliasing),高频成分会“折叠”到低频区域,造成频谱失真。例如,若轴承故障特征频率为 2.5 kHz,采样频率至少应为 5 kHz,工程上通常取 5~10 倍以保证余量。

参数符号计算公式典型值(振动监测)
采样频率fs≥ 2 × fmax12.8 kHz / 25.6 kHz
采样点数N2m(FFT 要求)1024 / 2048 / 4096
频率分辨率Δffs / N12.5 Hz(12.8k/1024)
采样时长TN / fs0.08 s ~ 0.32 s

在 TinyML 场景中,采样点数和采样频率直接决定了内存占用和计算量。一个 1024 点的 FFT 需要约 4 KB 的浮点缓冲区(若用 int16 则为 2 KB),而 Cortex-M4 内核执行 1024 点 FFT 大约需要 1~3 ms(取决于时钟频率和优化程度)。因此,在算法设计之初就要根据 MCU 资源合理选择 N 和 fs,而不是盲目追求高分辨率。

2.2 时域波形与频谱的数学关系:傅里叶变换

傅里叶变换是连接时域与频域的桥梁。对于离散序列 x[n],其离散傅里叶变换(DFT)定义为:

X[k] = Σ_{n=0}^{N-1} x[n] · e^{-j·2π·k·n/N},k = 0, 1, ..., N-1

其中 X[k] 是第 k 个频率分量的复数值,其模 |X[k]| 表示该频率成分的幅值,幅角表示相位。实际应用中,直接计算 DFT 的复杂度为 O(N²),而快速傅里叶变换(FFT)利用旋转因子的对称性和周期性,将复杂度降至 O(N·log₂N)。以 1024 点 FFT 为例,DFT 需要约 100 万次复数乘法,而 FFT 仅需约 1 万次,计算量降低两个数量级。

理解频谱时需要注意以下几点:

  • 频谱是离散的:由于采样序列是有限长的,频谱在频域上以 Δf 为间隔离散分布,每个频点 k 对应的实际频率为 f = k·Δf。
  • 幅值修正:FFT 输出的幅值需要乘以 2/N(单边谱)才能得到真实幅值。直流分量(k=0)只需乘以 1/N。
  • 窗函数的影响:直接对截断信号做 FFT 会产生频谱泄漏,旁瓣会掩盖邻近的微弱信号。加汉宁窗(Hann)可将旁瓣衰减约 31 dB,但主瓣宽度增加一倍,频率分辨率下降。
工程经验:在 TinyML 故障诊断中,通常采用“先加窗、后 FFT、再取幅值”的流程。汉宁窗是默认选择,因为它能有效抑制泄漏且计算简单(只需一次乘加)。对于需要精确测量幅值的场景(如振动烈度评估),应使用平顶窗(Flat-top),但主瓣更宽,适合稳态信号。

2.3 为什么需要频域分析:时域难以解决的四个问题

时域分析并非无用,它在检测冲击、削顶、间歇性异常时非常有效。但在以下四类场景中,频域分析具有不可替代的优势:

  1. 微弱特征提取:轴承早期点蚀产生的冲击能量很小,时域波形中幅值变化可能只有正常水平的 1%~2%,肉眼无法分辨。但在频谱中,故障特征频率处的幅值会明显高于噪声基底,通过设定阈值即可识别。
  2. 多频率成分分离:一台设备可能同时存在转子不平衡(1×转频)、不对中(2×转频)、齿轮啮合(齿数×转频)等多种振动源。时域波形是这些成分的叠加,无法区分;频谱则像“光谱仪”一样,将每种成分分离到独立的频点上。
  3. 趋势监测与早期预警:通过跟踪特定频段的能量变化(如 1 kHz~3 kHz 的轴承高频段),可以建立设备劣化趋势曲线。当能量值超过基线 3 倍时,即使时域波形仍正常,系统也能提前报警。
  4. 抗噪声干扰:时域信号的信噪比往往很低,但经过 FFT 后,随机噪声的功率被平均分配到所有频点,而确定性故障特征集中在少数频点。因此,频域分析等效于一种“窄带滤波”,能显著提高信噪比。
对比维度时域分析频域分析
信息类型幅值随时间变化幅值随频率分布
故障敏感度对冲击敏感,对微弱磨损不敏感对周期性特征敏感,可检测早期微弱故障
计算复杂度低(均值、峰值、RMS)中(FFT 需 O(N·logN))
抗噪能力弱,噪声直接叠加在波形上强,噪声被分散到各频点
实时性高,逐点计算需攒够 N 点才能计算,有延迟
典型应用超限报警、冲击检测故障分类、趋势预测、特征提取

2.4 案例拆解:电机轴承故障的时域与频域对比

某工厂一台 4 极异步电机(额定转速 1470 rpm,转频 fr = 24.5 Hz)驱动离心泵,振动传感器安装在电机驱动端轴承座上。设备运行半年后,巡检人员发现时域波形幅值略有增大(从 2.1 mm/s 升至 2.8 mm/s),但仍低于报警值 4.5 mm/s。时域波形看起来只是“噪声变大了一些”,无法判断是否存在故障。

采集 2048 点数据,采样频率 fs = 12.8 kHz,频率分辨率 Δf = 6.25 Hz。对信号加汉宁窗后进行 FFT,得到频谱如下:

频点(k)  频率(Hz)   幅值(mm/s)
  4       25.0      1.82   ← 转频 1×fr
  8       50.0      0.45   ← 2×fr(轻微不对中)
  12      75.0      0.12   ← 3×fr
  35      218.8     0.08   ← 噪声基底
  36      225.0     0.31   ← 疑似故障特征频率
  37      231.3     0.09
  72      450.0     0.06   ← 2×故障特征频率

分析过程:

  • 计算轴承外圈故障特征频率 BPFO = 0.4 × Nball × fr。该轴承有 9 个滚动体,BPFO = 0.4 × 9 × 24.5 ≈ 88.2 Hz。但频谱中 88 Hz 附近并无明显峰值。
  • 再计算内圈故障特征频率 BPFI = 0.6 × 9 × 24.5 ≈ 132.3 Hz。频谱中 132 Hz 处幅值仅 0.05 mm/s,也不突出。
  • 注意到 225 Hz 处有 0.31 mm/s 的峰值,且 450 Hz 处有 0.06 mm/s 的二次谐波。225 Hz 恰好等于 9 × 25 Hz(转频的 9 倍),这可能是保持架故障特征频率(FTF)的整数倍,也可能是滚动体通过频率。
  • 进一步检查时域波形,发现每 0.04 s(对应 25 Hz)有一个微小的冲击脉冲,但幅值仅比噪声高 0.3 mm/s,肉眼几乎不可见。

最终诊断:保持架磨损导致滚动体间距不均匀,产生 225 Hz 的周期性冲击。由于时域幅值未超限,传统保护系统不会报警;但频域分析在故障早期就捕捉到了特征频率。随后安排停机检修,发现保持架确有裂纹,更换轴承后 225 Hz 峰值消失,振动幅值降至 1.9 mm/s。

关键教训:时域阈值报警只能检测“已经严重的故障”,而频域分析能提前 1~3 个月发现早期异常。但频域分析也有代价:需要攒够采样点数导致响应延迟(本例中 2048 点 @12.8 kHz 需要 160 ms),且对采样频率稳定性要求高。在 TinyML 实现中,建议采用“时域粗筛 + 频域精判”的两级策略:先用 RMS 或峰值做快速判断,只有超限时才触发 FFT 分析,以降低平均功耗。

2.5 常见误区与总结复盘

在 TinyML 频域特征提取的实践中,初学者常犯以下错误:

  • 误区一:采样频率越高越好。高采样率导致数据量激增,MCU 内存和功耗压力增大。应根据最高故障特征频率选择采样率,通常取最高关注频率的 4~8 倍即可。
  • 误区二:忽略窗函数。直接对原始信号做 FFT 会产生严重泄漏,导致相邻频点互相干扰。必须加窗,且窗函数的选择会影响幅值精度和频率分辨率。
  • 误区三:只看幅值谱,忽略相位。虽然 TinyML 中通常只用幅值特征,但相位信息在识别特定故障(如不对中)时仍有价值。若 MCU 资源允许,可保留相位特征。
  • 误区四:频率分辨率不足。若 Δf 大于故障特征频率的间隔,两个相邻频率成分会合并为一个峰。例如,转频 24.5 Hz 和 25 Hz 的区分需要 Δf < 0.5 Hz,即 N > 25.6k 点,这在 MCU 上不现实。此时应通过增加采样时长或使用 Zoom-FFT 技术。

总结复盘:时域与频域不是对立关系,而是互补关系。时域适合快速判断“有没有异常”,频域适合精确回答“是什么故障”。在 TinyML 系统中,建议按以下流程设计:

  1. 确定目标故障类型及其特征频率范围,据此选择采样率和采样点数。
  2. 实现加窗 + FFT + 幅值谱计算,提取 3~5 个关键频段的能量或峰值作为特征。
  3. 将特征输入轻量级分类器(如决策树、1D-CNN),完成故障识别。
  4. 在 MCU 上验证实时性和功耗,必要时降低 FFT 点数或采用分段处理。