快速傅里叶变换 FFT
FFT 基础
在音频和声学测量领域,“快速傅里叶变换”(FFT)是一个非常重要的测量方法。它能将一个信号转化为频谱分量,从而得出关于该信号的频率信息。FFT 方法通常适用于对机械或某个系统进行缺陷分析,品质控制以及状态监测等。这篇文章将解释 FFT 如何运作,并介绍相关参数和其对测量结果的影响。
严格来说,FFT 是对“离散傅里叶变换”(DFT)的优化算法实现。信号在一个时间段内被采集并分离出频率分量。这些分量在不同频率各自都是正弦振荡波,有自己的幅度和相位。该转换过程可以用下图来示意。在所测量的时间内,信号包含了三个不同的主频。
分步详解
第一步中,信号的一部分被扫描并存储起来用于后处理。这里有两个相关的参数:
- 测试系统的采样率或采样频率 fs(如 48 kHz)。这是一秒内获取的样本平均数量(每秒钟样本数量)
- 选定的样本数量,块长度 BL。在 FFT 中总是 2 的整数幂(如 2^10 = 1024 样本)
从 fs 和 BL 这两个基础参数,可以确定更多的其它参数。
带宽 fn(= 尼奎斯特频率)。这个值表示 FFT 能测得的理论最大频率。
fn = fs / 2
比如采样率为 48 kHz 时,理论上能得到的最大频率分量就是 24 kHz。对于模拟系统来说,由于模拟滤波器的存在,实际测得值通常都或多或少小于理论值,比如说只测到 20 kHz。
测量周期 D。测量周期可由采样率 fs 和块长度 BL 计算。
D = BL / fs.
在 fs = 48 kHz 且 BL = 1024 时,周期即为 1024/48000 Hz = 21.33 ms
频率分辨率 df。频率分辨率表示两个测量结果间的频率间隔。
df = fs / BL
在 fs = 48 kHz 且 BL = 1024 时,分辨率即为 48000 Hz / 1024 = 46.88 Hz
实践中,系统一般都会提供多种可选的采样率。然而,一旦块长度 BL 确定,测量周期和频率分辨率就确定了,可能出现:
- 较小的块长使测量循环更快但频率分辨率较粗
- 较大块长会使测量更慢但得到更好的频率分辨率
以至无限 ...
傅里叶变换中,是假设采集的信号周期性无限重复的,这就带来两个结论:
- FFT 只适用于周期性信号
- 采集的信号段必须包含了一个完整周期
可以看出,结论 2 只有少数信号能满足。如果对一个频率不是 df 的整数倍的信号采样,则在含 2^n 个样本的块内,其将以不同的值开始和结束。这就导致时域信号的跳变,和 FFT 频谱的“弥散”。(也称泄露)
窗口
为了阻止这种弥散,实践中会对信号样本应用“窗口”。使用一个加权函数,信号样本或多或少会更平缓的开关。这样采集到的和之后的“加窗”信号即以幅值零开始和结束。现在,样本就无需经过复杂的转换而周期性重复。
范例
信号原理中的经典范例就是方波信号的频谱分量。 包含了所有基波频率加权奇数倍之和。
视频以时域信号和频谱形式展现了一个 500 Hz 方波信号是如何产生的。
如何测量?
便携式音频与声学分析仪 XL2 是快速进行简单 FFT 分析的理想工具,最大频率达 20 kHz。对于更多的通道和更详细的分析或计算,就需要像 FLEXUS FX100 音频分析仪这种具备大带宽和快速信号处理器的现代测试系统。与 FX-Control 计算机软件结合,它可以根据测量需要,快速简便的测量和显示 FFT。FX100 的大内存有效支持了更长的块长度,可以得到无比精细的频率分辨率。
FFT 进阶探究
本系列的第二部分将探究对实际的 FFT 测量应用有所帮助的内容。FFT 在众多应用中广泛使用。结果通常为图表因而易于理解。要进行精确的 FFT 测量也有一些细节需要注意。我们将为您提供一些有用的信息。
正如在上篇中所说,测量系统的采样率和块长度 BL 是 FFT 的两个核心参数。采样率表明了扫描待分析信号的速率。比如说,商用级计算机声卡录制 .WAV 格式音频时一般每秒采集 44100 次。
奈奎斯特定理
Harry Nyquist(哈里 · 奈奎斯特)发现了模拟信号采样的一个基础理论:采样率必须至少是信号最高频率的两倍。例如,要对一个最高频率为 24 kHz 的信号采样,采样率就至少要达到 48 kHz。采样率的一半,本例中就是 24 kHz,被称为“奈奎斯特频率”。
如果输入系统的频率高于奈奎斯特频率会怎样呢?
混叠
大多数时候,对信号的采样数量绰绰有余。在 48 kHz 采样率下,6 kHz 频率的信号每周期被采样 8 次,而 12 kHz 的信号就只能采样 4 次。在奈奎斯特频率,每周期就只能采集两次信号。
有不少于两个采样的情况下,要无损的重建信号还是可能的。但如果样本不到两个,生成的信号中就会包含原始信号中不存在的杂余信号。
镜像频率
在 FFT 中,此类杂余的人工信号以镜像频率的形式出现。如果超出奈奎斯特频率,信号将被设想出的极限反射,回弹到有用频带上。下面的视频展示的是一个采样率 44.1 kHz 的 FFT 系统。输入系统的是一个 15 kHz 到 25 kHz 的扫频信号。
这些讨厌的镜像频率在扫描前被一个模拟低通滤波器(抗混叠滤波器)过滤了。这个滤波器确保高于奈奎斯特频率的部分被抑制。
时间窗
在周期性重复的信号案例中,时间窗用来平缓扫描结束时的跳变(见上篇)。这能阻止频谱中的拖尾效应。窗口的类型繁多,有些只有很小的差别。在选择时间窗时要清楚:每个窗口在频率可选择性和幅值精度之间都有妥协。
频谱平均
在分析非周期性信号,比如噪声或音乐时,捕捉多个 FFT 块并据此确定平均值总是有益的。有两种可能的方法:
- 经典平均:测量多个 FFT。每个结果都在最后的平均结果中有相同的权重。这个方法适用于时间定义好的测量;
- 指数平均:持续测量 FFT。这里,同样的,也要考虑确定数量的 FFT 结果。然而,计权却与结果的“年龄”成反比。最早的测量对结果的贡献最小,最近的测量对平均结果影响最大。指数平均适用于长期持续监测频谱。
功率 vs. 峰值检测
现代的高分辨率 FFT 分析仪具备通过 FFT 块长度对测量结果数量解耦的能力。这样一来也会让测量时间变长,尤其是对高分辨率 FFT。因此,举例来说,对于一个 2MB 的块长,就没有必要测量和显示超过一百万个点(bins),只需足够用于显示的点数即可,如 1024 个。
确定每个 FFT 点(bin)值的方法有两种:
- “最大峰值”:此处用的是 FFT 结果中的最大值。这个方法非常适用于 FFT 的可视化显示;
- “功率”:这时计算 FFT 结果总和并按能量平均。当 FFT 用于计算时这个方法很有必要。
FFT 结果的计算
FFT 主要用于让信号直观且可视。不过,也有一些应用中 FFT 结果是用来做计算的。比如,通过 RSS (和的平方根)算法可以计算确定频带的极简电平。
另一个应用是频谱对比。下面范例中为一个电动螺丝刀的声学测量结果。测得结果减去参考频谱得到偏差。再将该差值与预设的上下限对比。其中上图频谱显示螺丝刀正常工作,下图的声学频谱则表明测试样本有缺陷。