FIRフィルターに必要なタップ数は?


20

ローパスフィルターを実装するためのFIRフィルターのセットを設計したいと考えています。また、フィルターを通過する信号の遅延を削減しようとしているので、使用できるタップの最小数はどのくらいかと思います。

タップを増やすと、周波数のカットオフがよりシャープになり、阻止帯域除去などが改善されることがわかっています。しかし、興味があるのはより基本的です-は、低周波信号を減衰させるために少なくとも100タップが必要であることを意味していますか?または、より少ないタップで逃げることができますか?そうであれば、理論的な下限がありますか?fs100

回答:


24

Bellangerの古典的な信号のデジタル処理–理論と実践を引用する、ポイントはカットオフ周波数がどこにあるかではなく、必要な減衰量、保持する信号のリップル量、および最も重要な方法です。パスバンドからストップバンドへの遷移を狭める(遷移幅)必要があります。

線形位相フィルターが必要であると仮定します(最小レイテンシーを指定しますが、一般的に、後から信号で何をしようとしているかをよく知っていない限り、最小位相フィルターは良いアイデアとは思いません) 。その場合、フィルター次数(タップの数)は

N23ログ10[110δ1δ2]fsf

fs サンプリングレートf 遷移幅、 すなわち。通過帯域の終わりと阻止帯域の始まりの違いδ1 通過帯域のリップル、 すなわち。「元の振幅をどれだけ変化させることができますか」δ2 ストップバンドでの抑制

いくつかの数字をプラグインしましょう!カットオフ周波数を指定したので、先に進み、遷移幅がその半分以下になると主張します。したがって、。fs100f=fs200

SDR / RFテクノロジーの場合、通常60 dBの抑制で十分です。ハードウェアは、必要以上のコストをかけずに入力から不要な信号を排除するので、CPUを無駄にせずにすみます。ハードウェアでできることよりも。したがって、δ2=60 dB=103

通過帯域で0.1%の振幅変動で生きることができるとしましょう(より多く生きることができる場合、抑制要件をより厳しくしないことも検討してください)。のは、δ1=104

だから、これを差し込む:

Nトミーのフィルター23ログ10[110δ1δ2]fsf=23ログ10[110104103]fsfs200=23ログ10[110107]200=23ログ10[1106]200=23ログ10106200=236200=800 。

だからあなたの200回のタップで、あなたは、遠くている場合に限っ私はあなたが希望仮定のように、あなたのフィルターに非常に狭い通過帯域を使用します。

これは問題である必要はないことに注意してください。まず、800タップフィルター恐ろしいですが、率直に言って、一見しただけです。

  • StackOverflowこの回答でテストしたように、CPU最適化されたFIR実装を使用すると、CPUの速度速くなります。たとえば、私はGNU Radioの FFT-FIR実装を使用し、上記のフィルター仕様の概要をそのまま使用しました。1秒あたり1億4100万サンプルのパフォーマンスが得られました。それで十分かもしれません。質問固有のテストケースを次に示します(作成に数秒かかりました)。GNU RadioベースのFFT FIRフィルタリングレート結果:rate_avg = 1.40982e + 08
  • MMM=50120050=24
  • 96kSs途方もなく141ミズs
  • 1100

3
Lake DSPは、1990年代半ばから早い時期に256,000タップのFIRフィルターをリアルタイムで実行していました。1200タップ?ああ!;-)
ピーターK.

2
@PeterK。それは精神だ!その256kT FIRに対する深い敬意–彼らが構築した数値精度は、デザインの大きさと同じくらい息をのむようであったに違いありません。90年代前半は技術的に楽しむには若すぎたので、興味深い時期だったに違いありません。しばらく前にエンジニアと話をして、当時DFT ICを使用していました。アプリケーション固有のDSP ASICの必要性は、コンピューティングプラットフォームでDSPを使用することでデータストリームを実際に処理できるが、「多目的」アクセラレーターは実際には処理できないということに気づきました(今日とは異なります)。
マーカスミュラー

@PeterK、ええ、でも彼らのオーストラリア人はいつも私たちの足を引っ張っています。
ロバートブリストージョンソン

@ robertbristow-johnson oy matey、インサイダーのジョークはここで何が起こっているのですか?
マーカスミュラー

2
@MarcusMüller、当時よりもASICの人気が高まっているように見えますが(そして、ASICの仕様/設計者であり、現在はFPGAを使用しているためだと思います)、初期に「多目的」DSPがありました。 90年代。LakeDSPのことは6 DSP56001で作成されました。
ロバートブリストージョンソン

14

迅速で非常に実用的な見積もりの​​ために、私はフレッド・ハリスの経験則が好きです:

Ntaps=Atten22BT

ここで:

Attenは、dB単位の希望する減衰です。

BTBT=FstopFpassFs

FstopFpass

Fs

これは、通過帯域リップルが0.1 dBの線形位相フィルターで得られる結果に非常に近い結果になります。私はこの経験則を頻繁に使用して、必要なタップ数の最初のアイデアを取得し、フィルター設計プロセスの反復を通じて修正します。

また、この経験則は、実際にタップ数を駆動するものに関する優れた洞察を提供します:ストップバンド減衰と遷移帯域の急峻さ(および通過帯域リップル、しかし通常、少なくとも私が設計しなければならなかったフィルターの場合)ワイヤレス通信アプリケーション-減衰要件がリップルよりも優先されます)。そのため、Fs / 100でのカットオフを述べる際の質問には、ストップバンドに移行するのに必要な速さが欠けています。

FsFpassFstop

Ntaps=60222/100=137

これらの数値をいじってみると、デシメーションアプローチを使用して処理を削減することの重要性を示すこともできます。


7

受け入れられた答えに加えて、いくつかの追加の参照。関与する可能性のある式は書きません。これらの式の大部分は、経験則または近似値から始まります。実際の設計のためにこれらの数値をいじることができます。

Bellangerの設計の起源の1つは、デジタルフィルターの計算の複雑さ、1981年、Proc。ユーロ。確認 回路理論設計、M。ベランジャー。入手は非常に困難ですが、実行可能です。興味深いことに、係数ごとのビット数を評価するための式も指定します。これは、有限演算の実装で考慮する必要があります。フランス語でよりアクセスしやすいバージョンは次のとおりです:1982年のfiltresnumériquesの複雑さの評価

他のいくつかの式は、有限インパルス応答フィルター設計、デジタル信号処理ハンドブック、1993、T。Samamakiにまとめられています。

最近では、最適なFIRデジタルフィルターの最小フィルター長の正確な推定、2000、K。Ichige et al。

最後に、2014年のl0ノルム最適化を使用した最小フィルター次数のFIRフィルターの効率的な設計は、次数が徐々に減少する設計を主張しています。


4

最小化する 最大|Hω|すべてのために ω 遮断帯域で
の対象1δ|Hω|δ すべてのために ω 通過帯域内

私が考えることができる主な実際的な問題は、最適化を行うときに使用される周波数サンプルの数です。周波数間サンプルの動作は望ましくない効果を引き起こす可能性があるためです。フィットがどれだけ良くなるかは、もちろんタップの数に依存します。タップの最小数は、問題が実行不可能になったときと言えると思います。したがって、1つの解決策は、実行可能性の問題を解決することです。

弊社のサイトを使用することにより、あなたは弊社のクッキーポリシーおよびプライバシーポリシーを読み、理解したものとみなされます。
Licensed under cc by-sa 3.0 with attribution required.