SSブログ

Chirp z変換によるFFT [任意点数のFFT]

2の基数のFFTがとりあえずできたので、まずそれを利用して任意の点数に対応できるアルゴリズムであるChirp z変換によるFFTをまとめてみる。これ、面白い。

Chirp z変換を利用した任意基数のFFT

Chirp z変換はこのサイト(ゲストでログインすると見せてもらえる)を見て初めて知ったのだけどなかなか面白い(ところでこのサイトは名前の綴りを間違ってる。sinやcosの中にtの非線形な項が入っている信号を音として聴くと音程が変わってぴゅいぴゅん、ぴよぴよと聴こえることからChirp)。Bluesteinのアルゴリズムとも言うらしい。

サイトを参考にノーテーションを今までのものに合わせて補いながら書き直してみる。

まずもとのDFTの定義
0905eq25a.png
にちょっと細工をする。ちょっと都合でこないだの「回転因子」はexponentialのまま残す。
0905eq25.png
と書いてみる。これは最後のexponentialの肩を展開してみれば式-1と一致することがわかる。

この式の一部を
0905eq26.png
と書くと式-25は
0905eq27.png
と書ける。

G(k)は
0905eq28.png
と書くとp(n)とq(n)の畳み込みとみなすことができる。ここでaaの複素共役を表している(勉強させてもらったサイトとは複素共役を逆に定義してる。これはあとの実装の都合でこうしたけど、本質的には同じ)。これを使って式-25を書き直すと
0905eq30.png
となる。ここで(ab)(k)abの畳み込みで、その結果の添字をkにする、という意味である。

畳み込みはDFTを使って計算できる。このままでは一つのDFTを計算するために、DFTを2回、逆DFTを1回実行することになってなにもうれしくない。

ところが、この畳み込みはもとの長さNではなく、任意性がある。従って畳み込みのためのDFTを効率の良い2のベキのFFTを使えるようにすれば計算量が減る可能性がある。

もうすこし詳細をみてみる。

nice!(0)  コメント(0)  トラックバック(0) 

nice! 0

コメント 0

コメントを書く

お名前:
URL:
コメント:
画像認証:
下の画像に表示されている文字を入力してください。

トラックバック 0

献立09/08献立09/09 ブログトップ

この広告は前回の更新から一定期間経過したブログに表示されています。更新すると自動で解除されます。