本文介绍了Python 中的可逆 STFT 和 ISTFT的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧!

问题描述

是否有任何具有相应逆的短时傅立叶变换的通用形式转换内置到 SciPy 或 NumPy 或其他什么?

matplotlib 中有 pyplot specgram 函数,它调用 ax.specgram(),它调用 mlab.specgram(),它调用_spectral_helper():

#检查 y 是否为 x 以便我们可以使用相同的函数来#实现psd()、csd()、spectrogram()的核心,不做#额外的计算.我们返回未平均的 Pxy、频率和 t.

但是

这是一个辅助函数,实现了204 #psd、csd 和频谱图.它是意味着在 mlab 之外使用

不过,我不确定这是否可以用于执行 STFT 和 ISTFT.还有什么别的,或者我应该翻译像这些MATLAB函数?

我知道如何编写自己的临时实现;我只是在寻找功能齐全的东西,它可以处理不同的窗口函数(但具有合理的默认值),并且与 COLA 窗口完全可逆(istft(stft(x))==x),经多人测试,无一错,处理末端和零填充,真实输入的快速RFFT实现等.

解决方案

我有点晚了,但意识到 scipy 已经内置了 istft 函数自 0.19.0 起

Is there any general-purpose form of short-time Fourier transform with corresponding inverse transform built into SciPy or NumPy or whatever?

There's the pyplot specgram function in matplotlib, which calls ax.specgram(), which calls mlab.specgram(), which calls _spectral_helper():

but

I'm not sure if this can be used to do an STFT and ISTFT, though. Is there anything else, or should I translate something like these MATLAB functions?

I know how to write my own ad-hoc implementation; I'm just looking for something full-featured, which can handle different windowing functions (but has a sane default), is fully invertible with COLA windows (istft(stft(x))==x), tested by multiple people, no off-by-one errors, handles the ends and zero padding well, fast RFFT implementation for real input, etc.

解决方案

I'm a little late to this, but realised scipy has inbuilt istft function as of 0.19.0

这篇关于Python 中的可逆 STFT 和 ISTFT的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持!

05-27 10:34