• 締切済み

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

専門家に質問してみよう