周期の関数を等間隔で分割してそれぞれのサンプル点を
、サンプル点での値をとすると、離散フーリエ変換の係数は
となる。
複素表示を展開すると
となる。
逆変換
サンプル点を復元する逆変換は、
プログラム化
Rubyの配列にベクトル演算を仕込む:
class Array |
離散フーリエ変換を行うクラス:
|
sin, cosを作るヘルパー関数
def make_cos_tbl(n, k) |
テスト:
dft8 = DFT.new(8) |
結果:
[1, 7, 3, 2, 0, 5, 0, 8] # 元のベクトル |
- 計算量はO(N^2)