Main Content

Inverse short-time FFT

The `dsp.ISTFT`

object computes the inverse short-time Fourier
transform (ISTFT) of the frequency-domain input signal and returns the time-domain output. The
object accepts frames of Fourier-transformed data, converts these frames into the time domain
using the IFFT operation, and performs overlap-add to reconstruct the data. The output of the
object is the reconstructed signal normalized by a factor that depends on the hop length and
`sum(`

. For more details, see Algorithms.`window`

)

returns an object,
`istf`

= dsp.ISTFT`istf`

, that implements inverse short-time FFT. The object processes
the data independently across each input channel over time.

returns an inverse short-time FFT object with the Window property
set to `istf`

= dsp.ISTFT(`window`

)`window`

.

returns an inverse short-time FFT object with the Window property
set to `istf`

= dsp.ISTFT(`window`

,`overlap`

)`window`

and the OverlapLength
property set to `overlap`

.

returns an inverse short-time FFT object with the `istf`

= dsp.ISTFT(`window`

,`overlap`

,`isconjsym`

)`Window`

property set
to `window`

, `OverlapLength`

property set to
`overlap`

, and the ConjugateSymmetricInput property set to
`isconjsym`

.

returns an inverse short-time FFT object with the `istf`

= dsp.ISTFT(`window`

,`overlap`

,`isconjsym`

,`woa`

)`Window`

property set
to `window`

, with the `OverlapLength`

property set
to `overlap`

, the `ConjugateSymmetricInput`

property
set to `isconjsym`

, and the WeightedOverlapAdd property set to `woa`

.

returns an inverse short-time FFT object with each specified property name set to the
specified value. You can specify additional name-value pair arguments in any order.`istf`

= dsp.ISTFT(`Name,Value`

)

Here is a sketch of how the algorithm is implemented without weighted overlap-add (WOLA):

The frequency-domain input is inverted using IFFT, and then overlap-add is performed. Note
that each run of the algorithm generates *R* new output time-domain samples,
where *R* is the hop length. The hop length is defined as
*WL* − *OL*, where *WL* is the window
length and *OL* is the overlap length. The normalization stage multiplies the
output by $$R/\text{sum}(win)$$, where *win* is the window vector specified in the
`Window`

property.

Here is a sketch of how the algorithm is implemented with Weighted Overlap-Add (WOLA):

In WOLA, a second window (usually called the synthesis window) is applied after the IFFT operation and before overlap-add. WOLA is used to suppress discontinuities at frame boundaries caused by nonlinear processing of the STFT. For more details, see More About.

Here is an illustration of how the input frequency subbands look when inverted with IFFT and overlap-added together to reconstruct a time-domain signal.

The analysis window (on the STFT side) and the synthesis window (on the ISTFT side) are
typically identical. To ensure perfect reconstruction, the windows are usually obtained by
taking the square root of windows satisfying the constant overlap-add (COLA) property. For
details on the COLA property and how perfect reconstruction is defined, see the More About in
`dsp.STFT`

page.

[1] Allen, J.B., and L. R. Rabiner. "A
Unified Approach to Short-Time Fourier Analysis and Synthesis,'' *Proceedings of the
IEEE, Vol. 65,* pp. 1558–1564, Nov. 1977.