LTspice:「いつの間にレベルが上がったんだ?」
画蔵:「スペクトラム分析を行う際の注意点がまずまとまったということで」
scilab:「ところでこのトピック、ボクばかり働きづめなんですけど」
画蔵:「そういえばそうだな。でもそのための計算ソフトだろ?」
scilab:「『scilab で遊ぼう』の領域じゃないの?」
画蔵:「遊んでいるわけではないが,,,じゃあそっちの書庫でリンクで紹介しておこう」

さて、前回スペクトラム分析を掛けるための事前準備というか、制限事項を挙げてみました。これらは ADC でデジタル信号化する前のフィルタを出来るだけ簡単なアナログ一次フィルタで構成する、という前提でした。この程度ならローコストで再現性も良く、そんなに特性がぶれることもない、ということで取り上げてみました。
構成としてはこんな感じです。

イメージ 1

で、前回までに触れたように評価周波数範囲を広げようとするとどうしても精度的な制約が出てきます。それらをアナログ回路で解決しようとすると、フィルタの次数を上げるとかが必要になるのですがコスト的にも再現性という点でも少し気がかりなものがあります。
今はデジタル技術の進歩というか、ADC のサンプリング周波数は結構高く取れるし、特性の良いデジタルフィルタを入れるぐらいのゲート容量は確保しやすいし、クロックもそれなりに上げられると云うことで、デジタル技術で対策した方が良い結果が得られます。
たとえば、次のようなブロックでスペクトラム分析をデジタル的に行うということです。

イメージ 2

簡単に解説しておくと、HPF で不要な低域(評価期間では周期性が見えない周波数)をカットするのは同じですが、次に入れる LPF のカットオフ周波数 fc をサンプリング周波数 Fs2 の半分と評価したい最大周波数 Fmax の間にセットしておきます。こうすることで最大周波数での減衰を最小限にとどめます。
実際のサンプリングは上述のサンプリング周波数の 10倍 = Fs1(だいたいの目安)で行います。折り返し雑音はサンプリング周波数 Fc2 の 5倍のところから折り返して発生するのですが、その前の LPF で Fmax のところに折り返してくる雑音量は大幅に減少しているので影響は少なくなります。
この状態で FIR(必ずしもこだわりませんが)を使った理想フィルタもどき(関連リンクはこちら)で、Fs2 / 2 よりちょっと低い周波数から急峻に減衰させてしまいます。
そうしておいてから Fs2 にダウンサンプリングを行って、S / N の良い信号として、スペクトラム分析をすることが出来ます。
「ダウンサンプリングする必要あるの?」と思いたくなるかも知れませんが、データ量が多ければそれだけプロセッサの負担が増えるわけで、この辺りは演算の桁数(関連リンクはこちら)や処理時間との関係から実用的なところを決めていく必要があります。

ということで、手製の怪しげな DFT らしきものによる実験はここまでにして、次からは scilab に搭載されている関数を使って今までの実験を確かめていこうと思います。