短時間フーリエ変換
逆短時間フーリエ変換(ぎゃくたんじかんフーリエへんかん、英: inverse short-time Fourier transform; ISTFT)は時間周波数表現を時間表現へ逆変換する操作である。各フレームのフーリエ係数を逆変換して時間表現へ戻し、合成窓 w s {\displaystyle w_{s}} を掛け、フレーム群を位置合わせしながら重畳加算することで1つの時間表現を合成する。
時間的に重なった信号を重畳加算するため、元信号の完全再構成は一般に可能でない。 w s {\displaystyle w_{s}} に矩形窓を採用して複数のフレームを重ねると元信号より大きくなることからこれは明らかである。「信号 →(STFT)→ 係数 →(ISTFT)→再構成信号」で完全な再構成を可能にする条件を完全再構成条件という。
連続時間での式と同様に w [ n ] {\displaystyle w[n]\,} は窓関数、 x [ n ] {\displaystyle x[n]\,} は変換される関数である。この式では n {\displaystyle n\,} が離散値であるが ω {\displaystyle \omega \,} が連続でもよい。しかし通常高速フーリエ変換を用いて計算機で計算されるので、 ω {\displaystyle \omega \,} も離散化される。
STFTの絶対値を2乗することで、パワースペクトルの時間変化が得られる:
p o w e r x , w ( t , ω ) = | S T F T x , w ( t , ω ) | 2 {\displaystyle \mathrm {power} _{x,w}(t,\omega )=|\mathrm {STFT} _{x,w}(t,\omega )|^{2}\,}
また、位相スペクトルの時間変化は、STFTの偏角で得られる:
p h a s e x , w ( t , ω ) = arg  S T F T x , w ( t , ω ) {\displaystyle \mathrm {phase} _{x,w}(t,\omega )=\arg \mathrm {STFT} _{x,w}(t,\omega )}
周波数が 10,25,50,100 Hz の順に 5 秒ごとに変化していく信号を考える。
x ( t ) = cos  ( 2 π f t ) , {\displaystyle x(t)=\cos(2\pi ft),\,} f / H z = { 10 , if 0 ≤ t / s < 5 25 , if 5 ≤ t / s < 10 50 , if 10 ≤ t / s < 15 100 , if 15 ≤ t / s < 20 {\displaystyle f/\mathrm {Hz} ={\begin{cases}10,&{\mbox{if }}0\leq t/\mathrm {s} <5\\25,&{\mbox{if }}5\leq t/\mathrm {s} <10\\50,&{\mbox{if }}10\leq t/\mathrm {s} <15\\100,&{\mbox{if }}15\leq t/\mathrm {s} <20\end{cases}}}
窓の幅を変えてSTFTすると次のようなスペクトラムが得られる。25ミリ秒の窓は信号の周波数変化の時刻を完全に識別できているが、信号の周波数を特定できない。一方で1000ミリ秒の窓は信号の周波数を特定できるが、信号の周波数変化をしたところがボケてしまっている。
25ミリ秒の窓
125ミリ秒の窓
375ミリ秒の窓
1000ミリ秒の窓