信号分析~ 信号FFT 3D分析 之 二
要把一系列离散的 FFT 结果(切片)连接成连续、平滑的 3D 效果,核心在于“重叠(Overlap)”和“插值(Interpolation)”。
如果只是简单地把每一帧 FFT 结果排在一起,你会得到一堆生硬的“横切面”,视觉上会有明显的断层。要实现平滑的 3D 效果,通常采用以下技术路径:
1. 时间维度的“滑动窗口”与重叠 (Overlap)
这是实现连续感最关键的一步。在做 STFT(短时傅里叶变换) 时,窗口不是“跳着走”的,而是“滑着走”的。
- 操作方式: 每一帧信号与前一帧保留一定比例的重叠(通常是 50%, 75% 甚至 90%)。
- 效果: 这样在频率轴上,相邻的两个 FFT 切片之间的数据具有高度的相关性。重叠率越高,在 3D 图中时间轴方向的渐变就越平滑。
2. 数学上的插值 (Interpolation)
当你拥有了高重叠率的数据,但在绘图软件(如 MATLAB, Python 的 Matplotlib 或 Origin)中渲染 3D 曲面时,依然需要对点与点之间的“空白”进行填充:
- 双线性插值 (Bilinear Interpolation): 在频率轴和时间轴两个方向上进行线性拟合,让网格间的过渡变得自然。
- 样条插值 (Spline Interpolation): 如果你追求极致的圆滑感,样条插值可以让峰值(Peak)看起来更像平滑的山峦而非锯齿。
3. 窗函数 (Windowing) 的平滑作用
为了防止每一帧的首尾信号突变导致频谱产生“毛刺”(频谱泄露),必须给每一帧加上窗函数(如 Hamming 或 Hann 窗)。
- 这些窗函数会让每一帧信号在边缘平滑衰减到零。配合上文提到的重叠技术,这些平滑边缘会互相融合,使得 3D 模型在时间轴上不会出现“阶梯感”。
4. 常见的 3D 表现形态
在术语上,这种连续连接后的 3D 效果有几种常见的视觉呈现:
| 呈现形式 | 连接方式 | 视觉特点 |
|---|---|---|
| 3D 曲面图 (Surface Plot) | 所有的 FFT 切片通过网格 (Mesh) 相互连接。 | 看起来像一个连续的起伏地形,最适合观察全局趋势。 |
| 瀑布图 (Waterfall) | 每一条曲线独立,但密集成排。 | 侧重于展示每一个时间点频率分量的变化过程,有较强的透视感。 |
| 彩色等高线图 (Contour/Heatmap) | 将 3D 俯拍成 2D,用颜色代表高度。 | 看起来虽然是平面的,但通过颜色渐变实现了数值上的连续感。 |
总结
要让 3D 图看起来连续,你的算法逻辑应该是:
- 设置高重叠率(如 75% Overlap)进行分帧。
- 施加窗函数以消除边缘噪声。
- 在绘图阶段开启曲面插值/着色(Shading)渲染。

浙公网安备 33010602011771号