• 締切済み

FIRフィルタ 零点から係数を求める。

FIRフィルタの係数の求め方がわかりません。 測定した信号から特定次数の高調波をカットするフィルタを 設計したいのですが、 どのように計算したらよいのかわからず、困っています。 ちなみに、タップ数は10と決まっています。 カットしたい高調波は 1次調波・3次調波・5次調波・7次調波・・・ という具合に、4~6こ程度あるので、単にBEFやBPFでは思ったような 特性が得られません。 また、Re-Im軸の単位円上から零点としたいn数の調波の座標(an,bn)を 読み取り、 (x-a0-b0i)(x-a+Bi)(x-a1-b1i)… という式に代入し、xの0~2n+1乗までの係数を求めるという方法も あるようなのですが、こちらもよい特性は得られませんでした。 よろしくお願いします。

みんなの回答

回答No.5

#4です。 間違った。 > 1.0*z^-4 - (c0 + c1*z^-1 + c2*z^-1 + ... + c8*z^8) ↓が正解 1.0*z^-4 - (c0 + c1*z^-1 + c2*z^-2 + ... + c8*z^-8)

回答No.4

#1です。 > 現在設計したいフィルタは、多数の高調波を含んだ信号から、 > 任意の高調波のみを取り出すというもです。 それなら別の方法があります。 例えば9タップで「取り出したい高調波だけををカットする」 対称型のフィルタを作成します。 対称型のフィルタの遅延はわかりますよね? 「高調波をカットしていない」元の信号を上のフィルタ と同じだけ遅延させます。 遅延させた信号からフィルタ出力を引き算します。 つまり 1.0*z^-4 - (c0 + c1*z^-1 + c2*z^-1 + ... + c8*z^8) [c0,... c8]は取り出したい周波数ごとに変更。

noname#101087
noname#101087
回答No.3

>測定した信号から特定次数の高調波をカット ..... 「測定した信号」の基本波周波数を可変し、かつ「特定次数も可変」なのですか? だとすると、適応フィルタの類いになりそう。 しかし、そんな「仕様」で良いのか? から再考せねばならないみたいですね。   

noname#101087
noname#101087
回答No.2

「高調波カット」なら、これの「フィードフォワード型」などが向いてそうです。             ↓  http://ja.wikipedia.org/wiki/%E3%82%B3%E3%83%A0%E3%83%95%E3%82%A3%E3%83%AB%E3%82%BF >コムフィルタ (comb filter)     

Nkazunari
質問者

補足

ご回答ありがとうございます。 コムフィルタは、カットしたい高調波が等間隔になってれば、いけないですよね? 説明が不足している部分があったようなので、付け足します。 現在設計したいフィルタは、多数の高調波を含んだ信号から、 任意のの高調波のみを取り出すというもです。 ですので、カットしたい高調波が、(例えば、3次調波を取り出すとすると)  1次調波(基本波)・5次調波・7次調波・9次調波 のように等間隔に並んではいないんす。

回答No.1

やったことはないけど、 例えば、 周波数A、周波数Bがゼロ点となるFIRフィルタを 適当な次数で作っておいて、 コンボリューションした後、 窓関数を使って、タップ数を10に合わせれば、 比較的簡単にできると思いますよ。

Nkazunari
質問者

補足

ご回答ありがとうございます。 早速試してみましたが、1つの零点をもつフィルタを複数合わせた後に タップ数を10にすると、特性が悪くなってしまい、カットしたい調波が それほど除去できなくなってしまいました。 タップ数が増やせれば解決できそうなのですが、ハード的にタップ数の変更が 不可能なので・・・。 ただ、零点が1つのFIRフィルタの次数について、まだ検討の余地が ありそうなので、もう少し試してみます。

関連するQ&A

  • フィルタ係数から特性を求めるには?

    FIRフィルタを作っています。 遮断周波数を設定してフィルタ係数を求めたのはいいんですが、その係数から周波数-振幅特性が実際にどのようなグラフになっているのかがわかりません。 求める方法を教えてください。 宜しくお願いします。

  • FIRフィルタ

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

  • FIRフィルタの製作

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

  • FIR,IIRフィルタの伝達関数に対する周波数特性を求めるには?

    FIRやIIRフィルタの伝達関数を式変形すると、周波数特性や移送特性が求められるようなのですが、伝達関数からの式変形がわからず困っています。 周波数特性を求めたいFIR,IIRフィルタの伝達関数は以下のようになっています。 直接型FIRフィルタの伝達関数 H(z)=h(0) + h(1)・z^-1 + h(2)・z^-2 + ・・・ h(x):係数(定数) http://momiji.i.ishikawa-nct.ac.jp/dfdesign/gfir/gfir.pdf 縦続型のIIRフィルタの伝達関数 H(z)=k1・(a10 + a11・z^-1 + a12・z^-2)/(1 + b11・z^-1 +b12・z^-2) ・k1・(a10 + a11・z^-1 + a12・z^-2)/(1 + b11・z^-1 +b12・z^-2) ・・・・ kx,axx,bxx:係数(定数) http://momiji.i.ishikawa-nct.ac.jp/dfdesign/giir/giir.pdf ここで、 z=exp(jwT)を代入し、 H(exp(jwT))=|H(w)|exp(jθ(w)) と式変形した際の|H(w)|が周波数特性となるそうです。 ただし、能力不足のため式の変形ができず周波数特性を求めることができません。 わかるかたご回答よろしくお願いします

  • バタフライ型FIRフィルタの逆フィルタの求め方

    バタフライ型FIRフィルタの逆フィルタの求め方について教えてください。 X, Yは(互いに相関が無い)入力、X', Y'はFIRフィルタの出力とします。 また、Hxx, Hxy, Hyx, Hyyはタップ係数とします 従ってこれらは以下の関係式となっています。 X'=Hxx*X+Hxy*Y Y'=Hyx*X+Hyy*Y このとき、逆フィルタはどのように求めればよいのでしょうか。 つまり、(X', Y')=>(X, Y)を求める方法が知りたいと思っています。 ノイズ等は無いとし、タップ長は任意とします。 (タップ長は適当に3程度と仮定してください) ご教授頂ければと存じます。宜しくお願い致します。

  • FIRフィルタに関する周波数変換について教えてくだ

    FIRフィルタに関するフィルタ係数の周波数変換について教えてください. 遮断角周波数ωcのハイパスフィルタのフィルタ係数を求める場合, まず最初,遮断角周波数ωcのローパスフィルタの係数h(LP)を求め, その結果を使って,ハイパスフィルタの係数h(HP)は h(HP)=(-1)^n*h(LP) という変換によって求められるのですが, なぜ,ローパスフィルタのフィルタ係数の奇数の項の符号を反転させるだけで, ハイパスフィルタのフィルタ係数になるのでしょうか? とても困っています. 宜しくお願いします.

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

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

  • デジタルフィルタとFIR Filter

    こんちには。 デジタルフィルタについて学んでいる者です。 カテ違いでしたらすみません。 http://www.f-kmr.com/filter.htm フィルタの種類や特性を調べており こちらのサイトが分かり易かったので、参考にしております。 このサイトの説明ですと 「横軸が周波数」「縦軸が利得」となっており ある周波数を基準にして、通す・通さないを決めているのだと 判断いたしました。 しかし、下記URLの4ページでは http://www.shinetsu-bt.go.jp/sbt/kenkyu/gapfiller/gapfiller-01/080526_siryou8-6_JRC.pdf 利得を基準にフィルタを設定しているように見えます。 「通す・通さない」というよりは「修正している」ように見えます。 そこで質問です。 【質問】 1. 利得を基準にしている方もデジタルフィルタなのでしょうか? 2. FIRフィルタとは、周波数を基準にフィルタをかけるのでしょうか? それとも利得を基準にフィルタをかけるのでしょうか? 素人ですみません。 宜しくお願いします。

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

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

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

    デジタルフィルタのフィルタ設計ができません。特にフィルタ係数が求まらなくて、周波数特性が制御できません。簡単な例をつけてくれたら幸いです。