Jupyter notebookによるFIRフィルタ特性比較

昨日紹介したJupyter notebookがあまりに面白いので、昼休みに遊んでいるうちにFIRフィルタの特性比較ノートブックを作ってしまいました。

このアプリケーションがどのように働くのか、また我々にどのように働きかけるのか、面白いサンプルだと思いますので公開します。

窓関数法のバリエーションの比較は面倒

FIRフィルタの設計法の一つに窓関数法があります。ベテランに話を伺うと「思い通りの特性にするまで試行錯誤が必要」ということで、あまり人気がないようです。しかし、背景の考え方がわかりやすいため、私は窓関数法が好みです。

かつてはFIRフィルタの設計をしたくとも、設計ツールがゴロゴロ転がっているとは言えない状況でした。必然的にフリーのツールを探すわけですが、私はもっぱら石川高専山田研究室のDF-Designを使っていました。後になって、結構な数の方がこのサービスを今でも使っていると知って驚いたものです。

さて、DF-DesignはFIRフィルタの設計時に窓関数を選ぶことができます。窓関数はフィルタ特性を決める重要な要素です。かつてはフィルタの窓関数やタップ数を振るたびに出力されるレポートを並べて、眉間にしわを寄せて睨みながら計算結果を比較したものです。いっぽう、教科書にはパラメタを振って描いたチャートが見やすく掲載されていますが、所望のフィルタが所望の特性でピックアップされている可能性など皆無でした。

Jupyter notebookによる比較

結論から言えば、こういった悩みはJupyter notebookで一旦ツールを書いてしまえば全部解決します。

Jupyter notebookはPythonプログラムです。ですので、あふれんばかりのモジュールを駆使すれば、労せずしてフィルタの設計ができてしまいます。また、これらの設計結果は所望のパラメータを与えてプロットすることも可能です。

ここまでなら、MATLABやscilabと変りません。Jupyter notebookの優れたところは、こういった計算結果を文書として保存することができると言うことです。さらに、markown書式によるテキストも追加できますので、解説とプログラムと計算結果を一つの文書の中にまとめきることが可能です。これはDon KnuthのWEBシステムとWolframのComputational Document Formatを統合したようなものとも言えるでしょう。

あれこれ能書きを垂れても仕方ないので、どのようなものかご覧に入れましょう。埋め込みウインドウ下のリンクをクリックすると、全体像を見ることが出来ます。

 

演習帳にも開発ツールにもなる教科書

リンク先のJupyter notebookドキュメントは、GitHubのGistシステムによりレンダリングされたものです。これは実行結果を見ているだけであり、Jupyter notebookの一面しか表していません。それでも、テキストによる解説、プログラムの提示、実行結果が一つの文書にまとめられていることがわかります。

Jupyter notebookの真価はここからです。リンク先のアイコンからipynbファイルをダウンロードすると、自分のPC上でこのノートブックを実行できます。

image

実行環境ではプログラムの書き換えができますから、興味のあるフィルタを好きなパラメータで振り回して描画することが可能です。もちろん、描画プログラムを書き換えれば周波数特性だけではなく位相特性やインパルス応答も見ることが出来ます。

そして肝心なことですが、このプログラムをほんの少し書き換えることで、周波数特性ではなくインパルス応答を数値で出力できます。書き加えるプログラムはたった2行です。

for coeff in b :
    print( coeff )

このように、Jupyter notebookを使えば、教科書が演習帳になり、また、開発ツールにもなります。

「教科書に掲載されているこれ、面白そうだけど実装が面倒」

という、私の世代の悩みは今や無意味です。多くのノートブックが開発されて限りなく学習障壁が低くなっていくことは想像に難くありません。

いろいろな事が変る

興味本位で触ってみたJupyter notebookですが、想像を遙かに超えたツールでした。今後いろいろなコンテンツが現れてくることでしょう。以前にWEBサイトに書いた解説を、Jupyter notebookで書き直すのも楽しそうだな、と考えています。

コメントする

このサイトはスパムを低減するために Akismet を使っています。コメントデータの処理方法の詳細はこちらをご覧ください