- 締切済み
音響信号処理をC言語でプログラミング
音響信号処理をC言語でプログラミングを考えています。 理由としては ・現在はMATLABを使って信号処理しているが処理速度が遅い為 ・ロボット等のシステムに組み込む際C言語の方がよさそうだから 現在の目標は ・マイクロホンで録音した信号を読み込む。 ・録音した信号を短時間フーリエ変換する。 を考えています。 そこで質問なのですが (1)必要(便利)な機器,ソフトウェア (2)必要な知識(参考資料) について詳しい方がいらっしゃいましたらよろしくお願いします。
- みんなの回答 (2)
- 専門家の回答
みんなの回答
- chie65536(@chie65535)
- ベストアンサー率44% (8755/19868)
>・現在はMATLABを使って信号処理しているが処理速度が遅い為 >・ロボット等のシステムに組み込む際C言語の方がよさそうだから 実数演算を廃して、固定小数点演算(実質的には整数演算になる)を用いるのが良いでしょう。 ロボットに組み込むなら、RAM、ROM領域が非常に狭い組み込み用マイコンで動かす事になるでしょうから、実質的に「実数演算は使えない」と思ってください。 組み込み用マイコンで実数演算を行うと、実数演算ライブラリがプログラム領域の大半を使用し、ユーザー用プログラム領域が足りなくなります(ROMのサイズがEEPROMのサイズを超え、ROMライタで焼き込み出来なくなります) 例えば「整数部12ビット、小数部20ビットの32ビット固定小数点数」にすれば、乗算の際にちょっと工夫が必要ですが、事実上、整数演算のみで実現出来ます。 整数演算のみであれば「やる気になれば、アセンブラで書いて、超高速フーリエ変換」も可能です。 >(1)必要(便利)な機器,ソフトウェア アルゴリズムを組み立てるとか、基礎的な部分を書くとか、ちょっとしたテストをするとかなら、普通のパソコンに体験版・無料版のCコンパイラをインストールすれば良いと思います。 >(2)必要な知識(参考資料) フーリエ変換なら、ネットで「FFT」で検索すれば、色んなサイトで、色んなサンプルプログラムが見付かると思います。もしかしたら、固定小数点演算(整数演算)で書かれたサンプルプログラムとかが見付かるかも。
- genso-cake
- ベストアンサー率65% (23/35)
FFTやデジタルフィルタ系のコードは多くのサイトで紹介されていますので、 たとえば、 http://thorshammer.blog95.fc2.com/blog-entry-118.html のようなサイトを参照してもらえばよいのではないでしょうか。 基本の信号処理自体は多くのサイトで紹介されているので、 それほど障害にならないと思うのですが、 実際、出てきた信号をどのように処理するかが難しいと思います。 ですから、FFTをする前後でどのような処理をするかを調べておくことをおすすめします。
お礼
参考になるサイトの紹介ありがとうございます。 先代の方が残してくれたプログラムを参考に目標を達成したいと思います。
お礼
回答ありがとうございます。 (1)コンパイラにはBorland C++ Compilerを検討してみます。 (2)固定小数点演算(整数演算)については勉強不足なので詳しく調べてみたいと思います。