It is known that
a) the STFT gives a rectangular tiling of the time-frequency plane
b) the Wavelet transform gives a non-linear tiling (better frequency resolution for low-frequencies, and better time-domain resolution for higher-frequencies)
c) Constant-Q transform (such as NonStationaryGaborTransform) have a logarithmic scale for frequency bins (instead of linear with STFT) and have a time-frequency tiling like this (y-axis logarithmic):
Question:
Is there an transform like this:
i.e. like a normal STFT, but for which the FFT-size would change for successive time frames.
Example: if there is a transient, the FFT-size is small (512) to keep good time-domain resolution, then a few time-frames later the signal is rather stationary, so the FFT-size is higher (8192) to have good frequency resolution.
It's like an adaptative / multiresolution STFT.
Last but not least: of course it's always possible to perform FFT with different window-length on successive time-frames, so the forward transform I'm describing is probably easy to do.
What I'm asking here is a transform which is invertible, i.e. in which we can compute an inverse transform to recover the initial signal.
Does this exist in Matlab or Python?