STFT
- 異常値の検知など、長い時系列データの全体の傾向ではなく、短い時間でのことを知りたい場合がある
- そこで使うのがSTFT(短時間フーリエ変換)
- 時系列データを分割して、別々にFFTに入れただけ
- FFTに入れると無限長の信号扱いになって境界で不連続になるから、 [[ 時間窓 ]]を使う
- 短時間でも低周波成分は入ることに注意
- 局所的な性格が反映されやすく、遠い時刻のことが反映されなくなるというだけ
- FFTと違って時間軸を含めた3つの軸が必要になるから、スペクトルとは別の図を使う。それがスペクトログラム。時間と周波数で平面を作って、成分の強さは色で表現する。
- しかし、 [[ フーリエ変換の不確定性原理 ]]により、周波数での分解能と時間での分解能を両立することはできない
- 長い時間窓でみると細かい周波数の差がわかる
- 短い時間窓で見ると周波数は大まかにしかわからない
- これに妥協するのがウェーブレット変換
- 実装
scipy.signal.specgram
を使うと描画までやってくれる- スペクトログラムのデータ自体は取れない
- データがほしいときは 参考A を参照
参考
- 小野順貴 (2016) 短時間フーリエ変換の基礎と応用
- わかりやすい。Overlap Addについての解説もある。
- Ivan W. Selenick (2009) Short-Time Fourier Transform and Its Inverse
- stackoverflow
- fourier transform - STFT: why overlapping the window? - Signal Processing Stack Exchange
-
A [STFT(短時間フーリエ変換)でスペクトログラムを見てみよう!【pythonで音響信号処理】 もろみ先輩の日常](https://moromisenpy.com/python_stft/) - 実装はこれが簡単
Backlinks
ウェーブレット変換
[[フーリエ変換の不確定性原理]]のおかげで、時間と周波数の分解能は両立できない ウェーブレットという小さい基本の波を変形させて、その組み合わせで複雑な波を表現する ウェーブレットにはHaar, とかなんとかいくつかよく使われる窓関数がある [[priv/RMW]]では、解析したい信号自身からウェーブレットを作る 組み合わせはウェーブレット係数によって表現される [[STFT]]ではそれぞれの分解能はあらゆる時間・周波数で一定だったのに対して、ウェーブレット変換では周波数に応じて異なる分解能の組み合わせを使う なんでそんなことするの? 経験的に、低周波の信号は長く続き、高周波の信号は短いから 一周期が短いということではなくて、高周波の信号は突発的な事象に対応することが多いということ...