使用我自己的短时傅里叶变换 (STFT) 的 MATLAB 实现,我设法为分析步骤编写代码,其中一维时域信号逐渐加窗,进入傅里叶域并排列在二维矩阵中. 二维矩阵中的每个元素都是时间的函数和频率.
此演示文稿是对 STFT 的一个相当不错的概述,并提供了一些详细说明分析和重新综合步骤的方程。
但是,我希望能够任意修改,然后使用重新合成返回.
我相信我应该能够改变以我想要的任何方式,然后获得通过重新合成程序。这似乎与相位声码器的想法非常相似。
如演示文稿第 3.1 节所述,时域信号可以使用最小二乘法重新组合。这在Griffin 和 Lim的 1984 年论文中作为公式 (6) 给出。
在以下情况下需要应用最小二乘法以某种方式进行了修改。
问题:
- Griffin 和 Lim 论文的公式 (6) 是什么意思?
- 我要遵循哪些步骤来以数值方式实现等式 (6)?
在演示文稿中,方程的写法略有不同:
注意是重新合成的时域序列,是窗函数,并且是二维矩阵的一列的时域版本。
脚步:
从演示文稿中,我认为进行重新合成所需的步骤如下:
让
w_n
是离散窗口向量,是使用 IFFT 在2D 矩阵y_n(:,k)
的列上计算的时域向量。k
两者w_n
的y_n(:,k)
长度相同。然后,使用 Matlab 语法,我们计算逐点乘法:
w_n .* y_n(:,k)
- 这是上面表达式的分子吗?
- 第 3 步和第 4 步会发生什么?
- 无限加法意味着什么?