-1

我有一个 .wav 文件,我需要对其执行 STFT。说我不知道​​文件的长度。如何将其分解为更小的帧并执行 STFT?

4

1 回答 1

0

自从我上次在 MatLab 上工作已经有很长时间了,但我认为一般的算法应该是:

  1. 取输入信号。
  2. 与窗口函数(例如“n”个样本的矩形)逐点相乘。这意味着您现在将拥有一个包含“n”个样本的帧。
  3. 对该帧进行 FFT。
  4. 将窗口移动“m”个样本(m = shift,通常约为“n”的 25%)。执行步骤 2 和 3。
  5. 如果到达信号的末尾,无论你得到多少信号样本,其余的都用零填充。执行步骤 2 和 3。
  6. 您现在有了一个 3D 图 - 频率、幅度和时间。绘图以获取 STFT。

附带说明:MatLab 中没有 STFT 函数吗?你检查过吗?

于 2013-07-25T15:04:27.160 回答