• 締切済み

C言語によるディジタル信号処理のお勧めの本やサイト

C言語を使ったディジタル信号処理でFFT,DFT,ハミング窓,ギブスの現象,FIR(IIR)フィルタなどのいろいろなアルゴリズム,プログラムが載っていてしかも分かりやすかったり,有名な本ってありますか? また,何故その本がお勧めのかの理由も聞かせていただければ大変有難く思います。

みんなの回答

  • pacifist
  • ベストアンサー率40% (4/10)
回答No.1

Cによる科学技術計算 小池慎一著 CQ出版 理由 FFT(DFT)における幾つかのアルゴリズムがC言語のプログラム付で紹介されています。 補足 この本には「FFT,DFT,ハミング窓,ギブスの現象」が書かれていますが、ギブスの現象についてはその言葉を使わずに、実例のみが紹介されています。なお、アマゾンを見たら「在庫切れ」なので、入手不可と思われます。こんな情報ですみません。 個人的な意見ですが「ハミング窓,ギブスの現象,FIR(IIR)フィルタなど」はC言語にこだわらずに探した方が良いのではないでしょうか。ギブスの現象は現象ですし、窓は難しい計算が必要とは思いません。また、アクティブフィルターでなければ、デジタルフィルタは構成と係数が決まれば積和演算だけで計算できますので、構成と係数をどの様にするのかが重要と思います。

Rossana
質問者

お礼

ありがとうございました。他にも自分で探してみようと思います。

関連するQ&A

  • 現在ディジタル信号処理について勉強している初心者です。

    現在ディジタル信号処理について勉強している初心者です。 勉強していくうちにいくつか分からない点が出てきましたので質問させていただきました。 よろしくお願いします。 1.FIRフィルタを作成するとギブス現象が生じ、窓関数をかけるなどしてリプルを抑えますがなぜリプルがあってはいけないのでしょうか?これがあるとどこに影響(問題)が生じてくるのでしょうか? 2.本にFIRフィルタを窓関数法により作成すると「設計仕様と得られたFIRフィルタの周波数応答との間の誤差は通過域端および阻止域端周波数の近傍に集中する」と書かれていたのですが、これはグラフを見て分かるものなのでしょうか?意味がよくわかりません。 以上の2点について現在疑問を感じています。 よろしくお願いします。

  • C言語プログラムの離散フーリエ変換

    C言語プログラムの離散フーリエ変換について教えてください。「C言語による画像再構成の基礎」という本のプログラムをもとに二次元画像をDFT(通常の離散フーリエ変換)→InveresFFT(逆高速フーリエ変換)すると画像が左右反転、上下反転してしまいます。DFT→InverseDFTやFFT→InverseFFTだとそのようにはなりません。通常のDFTとFFTのアルゴリズムの違いからしかたがないのでしょうか?それともプログラムの変更で修正できるのでしょうか?どうしてもDFT→InverseFFTでがぞうをもとに戻したいのです。 サンプルページ http://www.iryokagaku.co.jp/frame/03-honwosagasu/370/370-dl.html P4-14fourier2d1d.c (離散フーリエ変換DFT)   P4-15fft.c(高速フーリエ変換)プログラムです

  • FFTによるフィルタの可能性について

    はじめまして、信号処理については初心者です。教えていただけると幸いです。 ソフト処理でディジタルフィルタを作成したいと思っています。 リアルタイム処理が最終目標です。 IIRとかFIRとかの手法がありますが、FFTによるフィルタリングの可能性はあるのか知りたいです。 エクセルを用いて、模擬的に作った方形波をFFT演算して、 その結果の高い周波数部分を0にして逆FFTすると、綺麗に高調波が除去されていました。 この方法でのフィルタリングは実現可能なものと考えてよいのでしょうか? FFT処理では、エクセルの結果を見る限り、(当たり前ですが)遮断周波数でスパッと切れた波形が得られています(遮断周波数以上の振幅は0になる)。 一方、フィルタの本などでは、振幅減衰は1次で-20dB/dec、2次で-40dB/decと書かれており、 物理法則上そうなるものと思っていました。 FFTを利用したフィルタリング(遮断周波数以上の振幅は0)というのは、 何か原理的に(物の理として)おかしいところはないのか、不安に思っています。 また、電気系の雑誌にはIIRフィルタ等の使用について書かれている記事を見受けますが、 FFTフィルタリングが可能だとすれば、こちらの方が理想的なフィルタが得られることになります。 何か問題があってFFTフィルタリングが採用されていないと思いますが、どのような問題を秘めているのでしょうか。 (FFTフィルタが理想なのに、IIRフィルタが使用される理由は?) 上にも記載しましたが、将来的には高速マイコン(DSP,FPU付き)を使用してリアルタイム的な処理を行いたいと考えています(サンプリング周波数は16kHz程度です)。 FFTフィルタリングの設計の肝、IIR(FIR)フィルタとの使い分けについても、ご教示いただけると幸いです。 どうぞよろしくお願いいたします。

  • デジタル信号の周波数分析の手法

    デジタル信号の周波数分析の手法にはどのようなものがありますか? 私が知っているのは、DFT、FFT、z変換だけです。 他にある方法を教えてください。

  • ディジタルフィルタについて

    ディジタルフィルタについて質問させていただきます。 私が勉強して得た知識として、FIRフィルタとIIRフィルタというものが代表的なものとしてあるのはわかったのですが、実用的な観点でいまいち双方のメリット・デメリットが見えてきません。 一応、FIRは位相ひずみがなく、IIRは次数を小さく出来るということはわかるのですが、実際使うとなったときに、どのような基準でFIRかIIRかということを選択するのでしょうか? どなたか、実用的にディジタルフィルタを用いている方がいらっしゃいましたら、実際の経験にもとづいて(例えば、こういう事例であれば、こちらのフィルタの特性の方が用いやすい、などなど・・・)教えていただければありがたく思います。 以上、よろしくお願いいたします。

  • FIRフィルタを用いたディジタルイコライザについて

    FIRフィルタを用いたディジタルイコライザの利点は何ですか? 少し調べたら、ほかのフィルタと比べて音質が良いとあったんですが、IIRフィルタでは音質がわるくなるんですか? よろしくお願いします。

  • デジタルフィルタの設計

    はじめてデジタルフィルタの設計をすることになりました。 決まっている事項は以下のようになります。 ・25msごと(40Hz)にA/D変換されたデータが出力されます。 ・出力データを使って波形を描きます。 ・描く波形はおよそ周波数は0~10Hzのものです。 ・係数を算出して、C言語のプログラムに組み込みます。 今のところ決まっているのはこのくらいです。 自分でも勉強していますが、 FIRは計算が比較的簡単で、安定しているが、次数が多くなる。 IIRは複雑で、不安定になることもあるが、次数が少なくてよい。 FIRでは、窓関数やREMEZ法などリプルを小さくする方法がある。 IIRでは、バタワース、チェビシェフ、ベッセルなどの方法がある。 程度のことしかわかっていません。 どのように設計していけばいいかわかりません。 経験のある方、良いアドバイスをお願いします。 また何かフリーツールで設計できるものがあれば教えてください。

  • 一次元IFFTとFFTにおけるプログラムをください。

    プログラミング経験1年くらいの者です。 通信シュミレーションのプログラムを書かなくてはいけないことになりました。しかし、私は、IDFTやDFTは作れるのですが、IFFTとFFTのアルゴリズムが難しく、また、プログラミングがまだまだということもあり、なかなかIFFT、FFTのプログラムがかけません。参照となるようなプログラムが欲しいと思っています。どうかよろしくお願いします。

  • 信号処理FIRフィルタに関して

    こんにちわ。デジタルフィルタに関するご質問です。 振動工学を勉強しているのですが、回転機械から検出した時系列加速度信号をFIR(ローパス)フィルタに通し、高周波ノイズを除去しようとしています。 FIRフィルタとは、「継続接続された一連の遅延器からなり、各遅延器出力の重み付け和を出力する」と教科書等によく書かれておりますが、例えば、周波数領域でのフィルタの振幅特性が最適なものが300次で求めたものだったとして、フィルタのインパルス応答h(t)を求めて、600個の時系列入力データをフィルタリングする場合、インパルス応答を二個つなげて、各時系列データにあてはめていくので良いのでしょうか? また、その場合、インパルス応答の継ぎ目は連続になっているべきなのでしょうか? もし、原理的にマズいことや、根本から間違えているようならば、ご指導下さいますよう、お願いします。

  • C言語のアルゴリズムについて

    C言語で「標準入力から英語の文章を読み込んで,文字列Ilmorが出現した行をその行番号とともに表示するプログラムを作りなさい.」とプログラムを作りたいのですが、文字列を発見するところまでは分かるのですが、その行どうやって表示すればいいのか分かりません。また、文章を読み込むのもすごくややこしく最後にエンターを二回押すなどの制限があります。(scanf) 参考になるプログラムを書いていただける方いませんか?できればC言語のアルゴリズムについて詳しく書いた本やサイトがあれば教えていただきたいです。 レベルは超入門的な本を2,3冊読んだ程度です。アルゴリズムなどにはまったく触れてなかったし、ライブラリー関数も少ししか載ってなかったので関数の本もあれば教えていただきたいです。