コラム27 ラズベリーパイでFIRフィルタの係数を求める ●ラズベリーパイと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ディレクトリにデジタルフィルタの周波数特性を計算するソースコード(firdesign.c)があるので次のようにコンパイルします。(*1)(*2)(*3) gcc `pkg-config --cflags opencv` firdesign.c -o firdesign `pkg-config --libs opencv` (*1)コンパイル済みのバイナリはここ。属性を変える必要あり(chmod 744 filename) (*2)`pkg-config ... opencv`を囲むキャラクタ(``)はクォーテーションマークではなく、バッククオート。本サイトからコピー&ペーストすると良い。 (*3)OpenCVをインストールしないとエラーになります(コラム16にインストール手順)。 ●周波数特性の計算と描画 エラーなしで通ったら次のように実行します。 ./firdesign ●LPFを設計してみる 図2-88のようなウインドウが現れてFIRフィルタの周波数特性が描画されます。急峻なカットオフ特性のLPFです。 図2-88 設計したFIRフィルタの周波数特性(LPF, 140タップ) ●導出した係数がファイルに落とされている ウインドウ上で何かキーを押すか、Terminal上でCtrl+Cでアプリケーションは終了します。coeff1.txtというファイルが生成されており(図2-89)、設計したFIRフィルタの係数が140個書かれています。 図2-89 coeff1.txtのなかに係数がある ●HPF, BPF, BRFも設計できる! Cソース(firdesign.c)内のFilTypeの値を0から1にすればHPFになります。図2-90にその特性を示します。 図2-90 設計したFIRフィルタの周波数特性(HPF, 140タップ) FilTypeの値を2にすればBPFに、3にすればBRFになります。図2-90, 91にそれらの特性を示します。 図2-91 設計したFIRフィルタの周波数特性(BPF, 140タップ) 図2-92 設計したFIRフィルタの周波数特性(BRF, 140タップ) FIRフィルタ係数の導出方法に関してはコラム26、Cソース(firdesign.c)の説明に関してはコラム28を参照してください。 目次へ戻る |