public_notes/content/20240115000000 卒論2004.md

25 lines
3.2 KiB
Markdown

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