• ベストアンサー

FIRフィルタの設計

FIRの設計に関して、 設計パラメータとしてはカットオフ、減衰量、リップル など挙げられますが、制約が厳しいとタップ数が増えてしまいます。 高次のFIRにするほどロールオフが急で減衰量も理想に近づきますが 逆に、ノイズフロアは悪化(上昇)してしまいました。 これはリップルが増えたことが原因だと考えていますが リップルの増加=ノイズフロアの上昇といまいち結びつきません。 ノイズフロア上昇なので量子化誤差によるホワイトノイズが 関係しているのでしょうか? どなたか詳しい方、ご教授いただけないでしょうか。 説明が分かりづらい場合は補足いたします。 よろしくお願いします。

質問者が選んだベストアンサー

  • ベストアンサー
noname#101087
noname#101087
回答No.3

>...... 直線位相のFIRです。 勘違いしてました。 次数を上げたら、ノイズ・レベルが増大したのではなく、ダイナミック・レンジが狭まったということみたいですね。 定性的には、(次数を上げて)遮断傾斜を急にすると、FIR での演算桁落ちが増大するのがふつう。 その結果としてノイズ・フロアが上がったようにみえる。 改善を要するなら、桁数を増やすしかなさそう。  

pony666
質問者

補足

なるほど! FIRのタップ数が増えれば演算誤差の積み上げが多くなるということですね。 これによってノイズフロアが上昇しダイナミックレンジが狭くなってしまうように見えていたわけですね。 頭の中がすっきりしました。ありがとうございました。

その他の回答 (2)

noname#101087
noname#101087
回答No.2

・直線位相特性の FIR なのですか? 処理対象の信号がどんなものか、まったく不明なので、断定は不可能ですけど、ロールオフを急峻にすると 波形ひずみが増大するような信号なのじゃありませんか? もしフィルタ位相が非直線だと、ロールオフを急にすればするほど、位相の湾曲が大きくなり、波形ひずみ を増大させます。  

pony666
質問者

補足

ご回答ありがとうございます。 #1さんのところで補足したとおり、直線位相のFIRです。 入力している信号は1kHzのサイン波なので、 波形ひずみは影響しないと考えていますがいかがでしょう? ちなみにサンプリングは48kHzです。

  • rabbit_cat
  • ベストアンサー率40% (829/2062)
回答No.1

本当に、回路を作って試してみたのか、それともシミュレーションで試してみたのか、どちらですか? 本当に理想的なFIRなら、FIR自身がノイズを作り出すことはありませんから、信号にもノイズにも、全く同じフィルタ特性がかかるだけです。 もし、本当に、ノイズフロアが上昇したんであれば、FIR自身がノイズを作り出しているんだと思いますが、それがなぜかは、どういうFIRを作ったのかわからなければ、答えようがないです。 >ノイズフロア上昇なので量子化誤差によるホワイトノイズが >関係しているのでしょうか? 理想的なFIRではれば、そもそも量子化誤差は0です。

pony666
質問者

補足

ご回答ありがとうございました。 ノイズフロアの現象はシミュレーションで確認しました。 シミュレーターはMatlabを使用しています。 フィルタの設計はMatlabで用意されている関数を使用しています。 もちろん直線位相は崩れていません。 Matlabではデフォルトでは、おそらく64or32bitで計算されるはずですので、 少なからず量子化誤差が発生します。 matlabでは  ・fir1(10,0.5)  ・fir1(100,0.5) で入力に理想のSINE波1kHzを入れてFFTを観測しました。 結果は次数の少ない前者がノイズフロアが低い結果が得られています。

関連するQ&A

  • FIRフィルタの遅延量補正とIIRフィルタの安定性について教えて頂きた

    FIRフィルタの遅延量補正とIIRフィルタの安定性について教えて頂きたいのですが。  双一次z変換を用いていくつかのIIRフィルタを作る事が出来ました。Scilbが持つIIR関数と比較して同じ結果になっています。IIRフィルタがフィルタ係数によっては不安定=発信したりする、というのはScilab等の結果と同じになる→フィルタ係数も同じ→不安定にならない。と思ってよいのでしょうか?。例えばですが、あるサンプリング周波数の波形データをフィルタする為に、同じサンプリング周波数で作ったImplus波形をIIRフィルタに放り込んで周波数応答を確認したら、実際にフィルタする波形データの最初から最後までその周波数応答でフィルタされると私は理解しているのですが。  私のフィルタを使う用途の場合は、フィルタの計算速度は特に制限は無く、速いに越した事はありませんが得られた結果が正確な事が大切なので、安定性や係数誤差の事を考えるとIIRフィルタではなくFIRフィルタでも構わないのですが、FIRフィルタの場合だとタップ数が多くなるので波形の遅延量が無視出来ません。フィルタを通した波形は次定数fastのレベル波形にして100Hz位で出すとは言え、IIRよりは数秒かコンマ数秒遅延した結果になると思います。そのような場合、遅延量を補正するとしたらどうしたら良いのでしょうか?。個人的にはタップ数が(IIRの場合は次数が)遅延量と思っているのですが。  宜しくお願い致します。

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

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

  • 適応フィルタのタップ数

    アクティブな消音システムを構築するため、DSPを用いた適応フィルタを構成しました。 用いたフィルタ係数決定アルゴリズムはfiltered-x LMSアルゴリズムです。 (filtered-xのフィルタは制御音発生器から観測点までの伝達関数です) このとき、ステップサイズパラメータμを5つほど用意して、 その各々に対して適応フィルタのタップ数を600,300,50と変えていきました。 μがある程度大きくなると、出てくる音(騒音と制御音の重ね合わせ)が収束しなくなるのは、 誤差信号e(n)の二乗推定量が収束しないからだというのは分かりました。 しかし、よく分からない現象を観測してしまって困っています。 上記の3つのタップ数の各々(600,300,50)に対して誤差信号e(n)が収束するようなμを用いている時に、 タップ数が多ければ多いほど誤差信号e(n)は小さくなるはずだと思っていたのですが、 実際にはタップ数が300の時にe(n)が最小(つまり最も消音効果がある)という結果を得ました。 サンプリング周期は10kHzなのでタップ数が原因の計算遅延はないはずです。 プログラミングが間違っているという事はない、 その他のパラメータ設定も適切である、 e(n)が収束するまで十分時間待った、 というような前提として、この現象はどう説明されるのでしょうか。

  • FIRフィルタ

    FIRフィルタの設計に関して、ホワイトノイズを入力信号として使用すると、各周波数成分が独立に増減しているか確認できない、つまり、別の周波数成分に影響を与えていないことを確認できないようなのですが、どのように実験すればよいのでしょうか?

  • FIRフィルタ

    手元にC++で設計されたFIRフィルタの記述があります。これを理解したいのですが、FIRフィルタの構造が分からないため、理解できずにいます。 FIRフィルタについて分かりやすく解説したサイトはないでしょうか?自分でも探してみたのですがピンと来るものがみつけられませんでした。 厳密に解説してあるものというより、C++での設計のためのアルゴリズムにつなげられるような解説だと助かります。 ちなみに私はC++は専門ですが回路は初心者です。 よろしくお願いします。

  • FIRフィルタって

    FIRフィルタって何ですか? おバカにもわかるようお願いします。。 「入力データ」という1500個くらいの数値が入ったcsvファイルと、「フィルタ係数(インパルス応答)」という10個の数値を渡されて 「javaでFIRフィルタ作って」 って言われたんですが(学校の課題) なんのことやら・・・

  • FIRフィルタ

    なぜデジタルフィルタのFIRフィルタは直線位相特性を持っているのでしょうか?

  • FIRフィルタ

    FIRフィルタのフィルタ係数の計算式がわかりません。 例えば、サンプリング周波数100kHzとカットオフ周波数10kHzの値だけで計算できるのでしょうか?できなかったら簡単な例でもいいので教えてください。

  • FIRフィルタの製作

    FIRフィルタの製作で困っていることがあります。 FIRフィルタをローパスとかバンドパス的な遮断の点からではなく 位相をずらす観点から、製作したいと思いつつも なかなか調べても遮断周波数を決めてタップ係数を求める手法 しか見つかりません。 初めてのフィルタ製作もあって、できるだけツールからではなく 手計算で求めたいです。 ご存知の方がいらっしゃったら、ご教授ください。

  • 電流センサの検出誤差によってベクトル制御はどれだ…

    電流センサの検出誤差によってベクトル制御はどれだけ影響を受けるか? 私は、AC三相モータを制御するインバータを設計・開発しています。 インバータには、電流センサがあり、U相、V相の電流を検出して、電圧値をCPUに送り、AD変換した値を使って、ベクトル制御を行っています。 質問1 この電流センサからの出力電圧誤差によって、ベクトル制御がどれほど影響を受けるかの計算式を教えてもらえないでしょうか? 質問2 使用用途にもよりますが、電流センサからの出力電圧誤差の許容範囲は、どのように設定すればよろしいでしょうか?ベクトル制御するための必要最低限の許容範囲をどのように考えればよいでしょうか? 質問3 ノイズが発生した場合、当然ながら電流センサの出力電圧は揺られるかと思います。 こちらも使用用途によるかとは思いますし、受けるノイズ量にもよるかとは 思いますが、「ノイズを受けてもベクトル制御が正常でなければならない」のか?、「ノイズを受けて、多少支障があるが安全上問題なく、ノイズが去った時点で再び動作する」のか?こういったところでのノウハウをいただけませんでしょうか?