コラム2C ラズベリーパイでIIRフィルタの周波数特性を計算する


●ラズベリーパイとOpenCVの準備

 本コラムではデジタルフィルタの周波数特性を計算するC言語ソースコードを
ラズベリーパイで実行します。また特性を描画するためにOpenCVコラム16参照)というライブラリを使用します。


■ラズベリーパイでコンパイルして実行する

 C言語で書かれたソースコードのコンパイルには
gcc(GNU Compiler Collection)を使用します。gccはラズベリーパイ(正確にはRasbianというOS)に含まれています。


●ソースコードのダウンロード

 ラズベリーパイをネット接続してWeb Browserを開き、このZIPファイルをダウンロードします。その後Terminalを開き、Downloadsディレクトリに行って次のように解凍します。

cd ~/Downloads
unzip chap2.zip

 するとchap2というディレクトリが出来るので次のようにデスクトップに移動します。

mv chap2 ../Desktop
cd ~/Desktop/chap2


●C言語で書かれたソースのコンパイル

 chap2ディレクトリにデジタルフィルタの周波数特性を計算するソースコード(iirfres.c)があるので次のようにコンパイルします。(*1)(*2)(*3)

gcc `pkg-config --cflags opencv` iirfres.c -o iirfres `pkg-config --libs opencv`

(*1)コンパイル済みのバイナリはここ。属性を変える必要あり(chmod 744 filename)

(*2)`pkg-config ... opencv`を囲むキャラクタ(``)はクォーテーションマークではなく、
バッククオート。本サイトからコピー&ペーストすると良い。

(*3)OpenCVをインストールしないとエラーになります(コラム16にインストール手順)。


●周波数特性の計算と描画

 エラーなしで通ったら次のように実行します。

./iirfres biquad1.txt


●biquad1.txtの係数で周波数特性を描いてみる

 図2-133のようなウインドウが現れて周波数特性が描画され、低域通過特性であることが分かります。


 図2-133 Biquad1個で作るLPFの周波数特性


 ウインドウ上で何かキーを押すか、Terminal上でCtrl+Cでアプリケーションは終了します。図2-134はbiquad1.txtの中身です。Biquadの係数で上からa0, a1, a2, b1, b2です。


 図2-134 biquad1.txtにその係数がある


●btwlpf4k.txtの係数で周波数特性を描いてみる

 他のTXTファイルでも試してみましょう。図2-135はbtwlpf4k.txtで実行した結果です。これはBiquadを4段縦続接続したLPFで、かなり急峻なカットオフ特性を持っています。


 図2-135 帯域除去フィルタの周波数特性


 図2-136はbtwlpf4k.txtの中身です。上から1段目のBiquadの係数a0, a1, a2, b1, b2、2段目のBiquadの係数a0, a1, a2, b1, b2、3段目のBiquadの係数a0, a1, a2, b1, b2、4段目のBiquadの係数a0, a1, a2, b1, b2、全部で20個あります。


 図2-136 btwlpf4k.txtにその係数


 周波数特性の計算方法、Cソース(iirfres.c)の説明に関してはコラム24コラム2Bを参照してください。


目次へ戻る