IIRフィルターは、直接形式1または2として実装できます。しかし、どのフォームを使用するかをどのように決定しますか?それぞれの長所と短所は何ですか?
IIRフィルターは、直接形式1または2として実装できます。しかし、どのフォームを使用するかをどのように決定しますか?それぞれの長所と短所は何ですか?
回答:
まず、ウィキペディアのDirect Form IおよびIIの実装について少し説明します。
直接型Iはより多くのメモリを必要としますが、やや単純な戦略であり、丸めや共振の問題が発生する可能性は低くなります。
ダイレクトフォームIIではメモリの消費量は少なくなりますが、異常な相互作用、より大きな数、より多くの丸め誤差が発生する可能性があります。これの多くは、小さなフィルター、特に2次フィルターをカスケード接続することで削減できます。
少し時代遅れですが、特にDirect Form IIを使用すると多くの問題が発生する可能性があるため、より包括的な回答に値する可能性があります。まず第一に、「すべてに適合するサイズ」はなく、最適な選択は特定のアプリケーションと制約に依存します。検討できるのは
したがって、要約すると、転置フォームIIが最良の選択となることがよくあります。いくつかの固定小数点シナリオでは、特に重大なノイズの問題がある場合、直接スペクトルIは、エラースペクトルシェーピングなどのようなものでより簡単に拡張できるため、より優れています。
リソースが非常に乏しいシステムで作業する場合、または極端な要件がある場合を除き、直接フォームIまたはIIを選択するかどうかは実際には問題ではありません。たとえば、PCやスマートフォンで何かをしているのであれば、それは本当に重要ではありません。個人的には、フォームIを好みます。
実際の問題は通常MIPSであり、固定小数点の実装を計画している場合、事態はさらに複雑になります。たとえば、ARMでは、係数とフィルター状態の両方が32ビットの場合、IIRフィルターははるかに多くのMIPSを消費します。たとえば、カットオフ周波数が非常に低いローパスフィルターを実装する必要がある場合、32ビットの状態と係数が必要です。そのような場合、たとえば状態変数フィルターなど、異なるタイプのフィルターを使用できます。
数値の精度などの技術的な違いとは別に、安定性の問題もあります。デジタルフィルターの極/零点のペアが互いに近い場合、周波数応答はさまざまな場所で不安定になる可能性があります(通常、ナイキストに近づくかゼロに近づく)。
IIRフィルターを音楽アプリケーションに使用する場合、フィルターパラメーターをリアルタイムで変調すると、実現の選択がフィルターの安定性に大きな影響を与える可能性があります(たとえば、ローパスフィルターのカットオフ周波数を変更する)。
私は、次の各実現のカットオフ周波数やピークゲインなどの時変パラメーターを違いを聞くことができるオープンソースアプリケーションを持っています。
プロジェクトはこちらです:
上記のメモリ、MIPS、ノイズ、および安定性に関するコメントに加えて、一般的に見落とされている別の要因があります。この要素はリセット機能です。これは私の状況のほとんどで非常に重要です。
Direct Form IIの実装では、遅延出力の状態はありません。そのため、Direct Form IIフィルターを「リセット」して「5」とすると、初期出力は5になりません。 -Simulinkの使用時にいくつかの深刻なフラストレーションを引き起こした直感的。このため、ほとんどの場合、直接フォームI実装を使用します。残念ながら、SimulinkはDSPツールボックスがある場合にのみDirect Form Iをサポートしますが、それでも入力信号から初期条件を設定することはできません。