離散フーリエ変換(DFT)
自分が理解するためのメモ書きのようなものなので、以下の記事↓の下位互換のような記事になってます。
また、ところどころ引用が入っております。
参考
離散フーリエ変換とは
離散フーリエ変換では、時系列データがN個な場合、区間Nで1/2周期とする周波数を基本に、0倍(定数成分)からN-1倍までのN個の周波数成分を算出します。
フーリエ変換は、「関数を無限次元のベクトルとみたときの基底変換」と言うことができる。このとき、時間を離散的に(とびとびの値)として表すと、これはただのベクトルの基底変換と言える。
つまり、与えられたベクトルを
フーリエ変換:
- 入力、出力が(複素)関数
離散フーリエ変換:
- 入力、出力が(複素)ベクトル
導出
sin, cosの離散化
※ベクトルの次元とサンプリング数を同じにするのは、逆変換したときに同じ形になるようにするため
(
sin
cos
行列にする
sin,cosの2つの周波数成分に分解
離散フーリエ変換(DFT)の前段階
入力ベクトルを
二つの周波数成分からもとのベクトルを合成
逆離散フーリエ変換(IDFT)の前段階
複素数形式で表示
オイラーの公式
を用いて、先ほどの
離散フーリエ変換(DFT)
逆離散フーリエ変換(IDFT)
ここで、
SC=0の検算
1 | from sympy import * |
↓ 出力
1 | Matrix([ |
以上より、
公式
離散フーリエ変換
逆離散フーリエ変換
普通のフーリエ変換の公式
いよいよ高速化です!