# 20240115000000 卒論2004 ## こちら [卒業論文 周波数サンプリングFIR フィルタの固定小数点DSP への実装に関する研究(謝辞削除版)]() ## なぜ公開するのか 自分が突然死ぬと、自分しか持っていないデジタルデータにアクセスできない、ということに気がついた。というか、最近そういうことがあった。内容の良し悪し以前に、そもそも内容にアクセスできなくなるのは、なんか惜しいなと思った。これがすばらしいから読んでほしい、とか、そういうことではない。というか、色々間違ってそうな気もするから、一般的には参考にしてはいけない可能性すらある。 博士論文くらいまで行くと、国会図書館にあったりするっぽいが、卒論ってあんまりそうなってないよね。すくなくとも自分のは公開されていない。こういう所に適当に置いとけば、webarchiveとかに引っかかり、割と長いこと見れるかもしれない。 謝辞は個人情報っぽかったので削除しておいた。 ## 雑な概要 ディジタル信号処理(DSP)は、入ってくる離散時間サンプル(サンプリング周波数で細切れになっている)を何かしらの形で表現して、それを足したり引いたり掛けたり、いろいろ計算することで、ローパスとかハイパスとかを作れる方法。サンプルが浮動小数点(doubleとか)で表わされるようなシステム(PCとかスマホだと普通。VSTとかAUとかは、あえてやらない限り基本そうなっている)は、割と高い精度で計算ができる。 いっぽう、浮動小数点ではない「固定小数点」でサンプルを表わすようなシステムでは、ビットが足りないとかで十分な精度が出ない場合がある。 そうすると、計算に誤差があるので、カットオフ周波数がズレたり、色々とイマイチなことが起きる。 このイマイチを解決する簡単な方法は、桁を増やすことで、それで良ければそうすればよい。ただ、桁を増やすと、計算の量が増えて間にあわなくなったり、メモリが足りなくなったりする。桁が増やせない場合はどうしよう?詰んだか?? ワンチャンある。なんでもかんでも解決できるわけではないので、ちょっと範囲を絞ろう。色んなフィルターをつくれる定番の「バイクアッドフィルター」というのがある。max/mspとかpure dataにある biquad~ がそれだと思えばいいと思う。これのことだけ考える。 biquad~ といっても、計算の順番や、途中の計算をどうやって取っとくかとかで、実装方法が色々ある。 ここの、 direct form 1 とか 2 とか、そういうやつ。 そのうちの、 normal form というのを使うと、EQとか作る時にはいい感じになった。めでたしめでたし。