2
用文字描述逆短时傅立叶逆变换算法
我试图从概念上理解将正向和反向短时傅立叶变换(STFT)应用于离散时域信号时发生的情况。我找到了Allen和Rabiner(1977)的经典论文,以及Wikipedia的文章(链接)。我相信,还有另一个好文章被发现在这里。 我对计算Gabor变换感兴趣,这无非是带有高斯窗口的STFT。 这是我对前向 STFT的了解: 从信号中选择一个子序列,该子序列由时域元素组成。 使用时域中的逐点乘法,将子序列乘以窗口函数。 使用FFT将相乘的子序列带入频域。 通过选择连续的重叠子序列,并重复上述过程,我们得到了一个具有m行n列的矩阵。每一列是在给定时间计算的子序列。这可以用于计算频谱图。 但是,对于逆 STFT,论文讨论了重叠分析部分的求和。我发现可视化这里发生的事情非常具有挑战性。为了能够计算反 STFT(如上所述,按逐步顺序),我必须做什么? 前向STFT 我创建了一个图,显示了我认为前向STFT正在进行的工作。我不了解的是如何组装每个子序列,以便获得原始时间序列。有人可以修改此图形或给出一个方程式来显示如何添加子序列吗? 逆变换 这是我对逆变换的了解。使用IFFT将每个连续的窗口带回到时域。然后,将每个窗口移动步长,然后将其添加到上一个移动的结果中。下图显示了此过程。相加的输出是时域信号。 代码示例 下面的Matlab代码生成一个合成的时域信号,然后测试STFT过程,证明在数值舍入误差内,逆是正向变换的对偶。信号的开始和结尾都进行零填充,以确保窗口的中心可以位于时域信号的第一个和最后一个元素。 ñ+ N0− 1ñ+ñ0-1个N + N_0 - 1ñ0ñ0N_0 % The code computes the STFT (Gabor transform) with step size = 1 % This is most useful when modifications of the signal is required in …