自从我上次在 MatLab 上工作已经有很长时间了,但我认为一般的算法应该是:
- 取输入信号。
- 与窗口函数(例如“n”个样本的矩形)逐点相乘。这意味着您现在将拥有一个包含“n”个样本的帧。
- 对该帧进行 FFT。
- 将窗口移动“m”个样本(m = shift,通常约为“n”的 25%)。执行步骤 2 和 3。
- 如果到达信号的末尾,无论你得到多少信号样本,其余的都用零填充。执行步骤 2 和 3。
- 您现在有了一个 3D 图 - 频率、幅度和时间。绘图以获取 STFT。
附带说明:MatLab 中没有 STFT 函数吗?你检查过吗?