以下は、AP社のジッタースペクトルのように1MサンプルのFFTでジッタースペクトルを出してみたいな・・というただそれだけのテストです。
Excelのマクロで1MサンプルについてFFT(ブックマン・ハリス7項窓)を演算させるというかなり強引な方法をとっています。
FFT分解能が上がると、よりメインローブの周波数の近くからスペクトルを拾える、つまり非常に低い周期のジッターを拾える、というメリットがありますね。(加えてノイズフロアも低減して測定できる)
2010/12/12:ジッターの続き。FFTの周波数分解能を上げてみる編
WaveSpectraだと、最高でサンプル長は2^17(131072サンプル)ですが、
Stereophileみたいに2^20(1Mサンプル)長でFFTしてみたいなあ・・・という、しょーもない事をやってみる。
1Mサンプルへ上げると、周波数分解能は8倍にUPしますので、それなりにうれしいこともあるかも(0.3662Hz→0.0458Hzになるはず)。
ところが、1M長でFFT出来るツールは探せどもWebでは見つからずに、しょんぼり。
しかたなく、Excelで作ってみる。(ふっ・・・おいらVBAくらいしか使えないからさ。)
といってもVBAで作ったのは、FFTのコアの部分だけ。(表示まわりをExcelまかせで全くやりませんのでとても楽です。)
そしてWindowの処理はブラックマン・ハリス7項の窓関数をセルに打ち込んで対応しますた(汗)
問題は1M長のFFT演算時間ですが、
いくらDFTに比べて圧倒的に効率のよいFFTとはいえ、
1M長で計算すると、ざっと2000万回は演算するはずで、VBAで出来るのか?ちょっとドキドキもの。
結果として、おいらの6年前のXPマシンでも、3分くらいで何とか演算が終わる模様。(遅)
試しにDA10で測定したデータをFFTしてみると・・・
いちおう、周波数分解能はウルトラ級(笑)の0.0458Hz・・・になっているはずさ。 意味あんのかしらん?
んー・・・。
メインローブの幅を見ると、確かに分解能は8倍上がっていますが・・・
そんなことよりも、複数回測定してアベレージングしてないので、ノイジーでけっこうキツイものがあります。
(DA10で発生する、100Hz近辺の小さなノイズがほとんど埋もれかけてしまっていることがわかります)
FFT長やアベレージング有無/回数でも、結果が大きく変わってしまいそうですねん。
しかし・・・さすがに数十回〜数百回のアベレージングまでやると、処理が終わるまでに日が暮れてしまいますので、Excelではこれ以上は無理かなあ・・・。
そして 相対比較するにしても、再生・録音機器に加えて、ソフトでの処理の条件もきちんと揃えないとダメっすねぇ・・・(あたりまえか)