信号処理におけるフィルタの種類
信号処理において、有限インパルス応答( FIR )フィルタは、インパルス応答(または任意の有限長入力に対する応答) が有限時間内にゼロに落ち着くため、その持続時間が有限であるフィルタです。これは、内部フィードバックを持ち、無期限に応答し続ける (通常は減衰する)無限インパルス応答( IIR ) フィルタとは対照的です。[引用が必要]
N次離散時間 FIR フィルタのインパルス応答(つまり、クロネッカー デルタ入力に対する出力) は、ゼロに落ち着くまで正確にサンプル (最初の非ゼロ要素から最後の非ゼロ要素まで) 続きます。

FIR フィルターは、離散時間または連続時間、デジタルまたはアナログのいずれかになります。
意味
N次の直接形式離散時間 FIR フィルタ。上部はN + 1 タップを持つN段遅延線です。各単位遅延は、 Z 変換表記のz −1演算子です。
N次の格子型離散時間 FIR フィルタ。各単位遅延は、Z 変換表記のz −1演算子です。
N次の因果的 離散時間FIRフィルタの場合、出力シーケンスの各値は最新の入力値の加重合計になります。
![{\displaystyle {\begin{aligned}y[n]&=b_{0}x[n]+b_{1}x[n-1]+\cdots +b_{N}x[nN]\\&=\sum _{i=0}^{N}b_{i}\cdot x[ni],\end{aligned}}}](https://wikimedia.org/api/rest_v1/media/math/render/svg/c43ba6c329a471401e87fe17c6130d801602ffdf)
どこ:
入力信号は
出力信号は
はフィルタの次数です。次数フィルタは右側に次の項を持ちます。

は、次数 FIR フィルタのi番目の瞬間におけるインパルス応答の値です。フィルタが直接形式 FIR フィルタの場合、 はフィルタの係数でもあります。


この計算は離散畳み込みとも呼ばれます。
これらの用語では、一般的に
タップは多くの実装やブロック図で乗算演算に遅延入力を提供するタップ付き遅延線の構造に基づいていますたとえば、
5 次/6 タップ フィルタ
定義されたフィルタのインパルス応答は、有限の持続時間にわたってゼロ以外になります。ゼロを含めると、インパルス応答は無限シーケンスになります。
![{\displaystyle h[n]=\sum _{i=0}^{N}b_{i}\cdot \delta [ni]={\begin{cases}b_{n}&0\leq n\leq N\\0&{\text{otherwise}}.\end{cases}}}](https://wikimedia.org/api/rest_v1/media/math/render/svg/57e64b41f6f07ac049f118cd4e1f80b6a5e7d78d)
FIR フィルタが非因果的である場合、そのインパルス応答内の非ゼロ値の範囲は より前から始まる可能性があり、定義式は適切に一般化されます。

プロパティ
FIR フィルターには、無限インパルス応答(IIR) フィルターよりも優れている場合がある便利な特性がいくつかあります。FIR フィルター:
- フィードバックを必要としません。つまり、合計反復によって丸め誤差が増大することはありません。各計算で同じ相対誤差が発生します。これにより、実装も簡単になります。
- 出力は入力値の有限個の有限倍数の合計であるため、本質的に安定しており、入力に現れる最大値の倍数を超えることはありません。

- 係数シーケンスを対称にすることで、簡単に線形位相になるように設計できます。この特性は、データ通信、地震学、クロスオーバー フィルタ、マスタリングなどの位相に敏感なアプリケーションで必要な場合があります。
FIR フィルタの主な欠点は、特に低周波数 (サンプル レートに対して) のカットオフが必要な場合、同様の鋭さや選択性を持つ IIR フィルタと比較して、汎用プロセッサでかなり多くの計算能力が必要になることです。ただし、多くのデジタル信号プロセッサは、多くのアプリケーションで FIR フィルタを IIR とほぼ同等の効率にする特殊なハードウェア機能を提供します。
周波数応答
フィルタがシーケンスに与える影響は、畳み込み定理によって周波数領域で記述されます。
そして ![{\displaystyle y[n]=x[n]*h[n]={\mathcal {F}}^{-1}{\big \{}X(\omega )\cdot H(\omega ){\big \}},}](https://wikimedia.org/api/rest_v1/media/math/render/svg/7aabf8de87f5069e218fed886fa815390345ff5b)
ここで、演算子と はそれぞれ離散時間フーリエ変換(DTFT) とその逆変換を表します。したがって、複素数値の乗法関数はフィルタの周波数応答です。これはフーリエ級数によって定義されます。

![{\displaystyle H_{2\pi }(\omega )\ \triangleq \sum _{n=-\infty }^{\infty }h[n]\cdot \left({e^{i\omega }}\right)^{-n}=\sum _{n=0}^{N}b_{n}\cdot \left({e^{i\omega }}\right)^{-n},}](https://wikimedia.org/api/rest_v1/media/math/render/svg/8ca9eec5b0a2efb8814181461f1dc7f234784b88)
ここで、追加された下付き文字は-周期性を表します。ここで、は正規化された単位(ラジアン/サンプル)での周波数を表します。関数は、サイクル/サンプル単位の の周期性を持ち、多くのフィルタ設計アプリケーションで好まれています。[A]ナイキスト周波数と呼ばれる 値は に対応します。 シーケンスの サンプリング レート(サンプル/秒) が既知である場合、通常の周波数はサイクル/秒( Hz )による正規化周波数に関連付けられます。逆に、サイクル/サンプル を期待するアプリケーションを使用して通常の周波数などのフィルタを設計する場合は、 などを
入力します。






![{\displaystyle x[n]}](https://wikimedia.org/api/rest_v1/media/math/render/svg/864cbbefbdcb55af4d9390911de1bf70167c4a3d)



フィルタインパルス応答の
Z変換で表現することもできます。
![{\displaystyle {\widehat {H}}(z)\ \triangleq \sum _{n=-\infty }^{\infty }h[n]\cdot z^{-n}.}](https://wikimedia.org/api/rest_v1/media/math/render/svg/60566e2b445b511e12243d4e01faba9d6ef54cf2)

フィルター設計
FIR フィルタは、特定の仕様を満たす係数とフィルタ順序を見つけることによって設計されます。仕様は、時間領域 (例:整合フィルタ) または周波数領域 (最も一般的) で指定できます。整合フィルタは、入力信号と既知のパルス形状との相互相関を実行します。FIR 畳み込みは、入力信号とインパルス応答の時間反転コピーとの相互相関です。したがって、整合フィルタのインパルス応答は、既知のパルス形状をサンプリングし、それらのサンプルを逆順にフィルタの係数として使用することによって「設計」されます。[1]
特定の周波数応答が必要な場合、いくつかの異なる設計方法が一般的です。
- 窓の設計方法
- 周波数サンプリング法
- 最小MSE(平均二乗誤差)法
- パークス・マクレラン法(等リップル法、最適法、またはミニマックス法とも呼ばれる)。Remez交換アルゴリズムは、最適な等リップル係数セットを見つけるためによく使用されます。ここで、ユーザーは、目的の周波数応答、この応答からの誤差の重み付け関数、およびフィルター次数Nを指定します。次に、アルゴリズムは、理想からの最大偏差を最小化する係数セットを見つけます。直感的には、係数のみを使用できる場合、これにより、目的の応答に可能な限り近いフィルターが見つかります。この方法は、少なくとも 1 つのテキスト[2]に必要なフィルターとNを受け取り、最適な係数を返すプログラムが含まれているため、実際には特に簡単です。


- 等リップル FIR フィルタも DFT アルゴリズムを使用して設計できます。[3]このアルゴリズムは本質的に反復的です。初期フィルタ設計の DFT は、FFT アルゴリズムを使用して計算されます (初期推定が利用できない場合は、h[n]=delta[n] を使用できます)。フーリエ領域、または DFT 領域では、周波数応答が目的の仕様に従って修正され、逆 DFT が計算されます。時間領域では、最初の N 個の係数のみが保持されます (他の係数はゼロに設定されます)。その後、このプロセスが反復的に繰り返されます。つまり、DFT がもう一度計算され、周波数領域で修正が適用され、これが繰り返されます。
MATLAB、GNU Octave、Scilab、SciPyなどのソフトウェア パッケージは、これらのさまざまな方法を適用するための便利な方法を提供します。
窓の設計方法
ウィンドウ設計法では、まず理想的な IIR フィルタを設計し、次に無限インパルス応答を有限長のウィンドウ関数で乗算して切り捨てます。その結果、周波数応答が IIR フィルタの周波数応答から変更された有限インパルス応答フィルタが得られます。時間領域で無限インパルスをウィンドウ関数で乗算すると、ウィンドウ関数のフーリエ変換 (または DTFT) で畳み込まれた IIR の周波数応答が得られます。ウィンドウのメインローブが狭い場合、合成周波数応答は理想的な IIR フィルタの周波数応答に近いままです。
理想的な応答は多くの場合矩形で、対応する IIR はsinc 関数です。周波数領域畳み込みの結果、矩形のエッジは先細りになり、通過帯域と阻止帯域にリップルが現れます。逆方向に作業を進めると、先細り領域 (遷移帯域) の傾斜 (または幅) とリップルの高さを指定でき、それによって適切なウィンドウ関数の周波数領域パラメータを導出できます。インパルス応答まで逆方向に作業を続けるには、フィルタ設計プログラムを反復して最小フィルタ次数を見つけます。別の方法としては、解の集合をカイザーウィンドウのパラメトリック ファミリに制限する方法があります。これにより、時間領域パラメータと周波数領域パラメータの間に閉じた形式の関係が提供されます。一般に、この方法では最小のフィルタ次数は実現されませんが、動的なオンザフライのフィルタ設計を必要とする自動化アプリケーションには特に便利です。
ウィンドウ設計法は、対応する sinc 関数が他のすべてのサンプル ポイント (中央のサンプル ポイントを除く) でゼロになるため、効率的なハーフ バンド フィルターを作成する場合にも有利です。ウィンドウ関数との積ではゼロは変更されないため、最終的なインパルス応答の係数のほぼ半分がゼロになります。FIR 計算を適切に実装すると、この特性を利用してフィルターの効率を 2 倍にすることができます。
最小二乗誤差(MSE)法
ゴール:
- MSE の意味で FIR フィルターを設計するには、取得したフィルターと目的のフィルター間の平均二乗誤差を最小化します。
ここで、はサンプリング周波数、は取得したフィルタのスペクトル、は 目的のフィルタのスペクトルです。


方法:
- N点の FIR フィルタ、およびが与えられます。
![{\displaystyle h[n]}](https://wikimedia.org/api/rest_v1/media/math/render/svg/89981bbbb05ffd469eeadb828c18359965985e46)
![{\displaystyle r[n]=h[n+k],k={\frac {(N-1)}{2}}}](https://wikimedia.org/api/rest_v1/media/math/render/svg/0173cecc88fe641fe2a5fcf616352bfd980e030a)
- ステップ1:対称性を仮定します。すると、の離散時間フーリエ変換は次のように定義されます。
![{\displaystyle h[n]}](https://wikimedia.org/api/rest_v1/media/math/render/svg/89981bbbb05ffd469eeadb828c18359965985e46)
![{\displaystyle r[n]}](https://wikimedia.org/api/rest_v1/media/math/render/svg/c09959f03d3759ff5f0fdd49b786757032ef1c02)
![{\displaystyle R(F)=e^{j2\pi Fk}H(F)=\sum _{n=0}^{k}s[n]\cos(2\pi nF)}](https://wikimedia.org/api/rest_v1/media/math/render/svg/e2eaf9290cbffccd6c2c690ed3a4c5ebba693480)
- ステップ 2: 平均二乗誤差を計算します。

- したがって、
![{\displaystyle {\text{MSE}}=\int _{-1/2}^{1/2}\sum _{n=0}^{k}s[n]\cos(2\pi nF)\sum _{\tau =0}^{k}s[\tau ]\cos(2\pi \tau F)\,dF-2\int _{-1/2}^{1/2}\sum _{n=0}^{k}s[n]\cos(2\pi nF)H_{d}\,dF+\int _{-1/2}^{1/2}H_{d}(F)^{2}\,dF}](https://wikimedia.org/api/rest_v1/media/math/render/svg/5c7fda053eeb3641df05b2a5a51a7bc85bf92419)
- ステップ3: MSEの偏微分を行って平均二乗誤差を最小化する。
![{\displaystyle {\frac {\partial {\text{MSE}}}{\partial s[n]}}=2\sum _{\tau =0}^{k}s[\tau ]\int _{-1/2}^{1/2}\cos(2\pi nF)\cos(2\pi \tau F)\,dF-2\int _{-1/2}^{1/2}H_{d}(F)^{2}\cos(2\pi nF)\,dF=0}](https://wikimedia.org/api/rest_v1/media/math/render/svg/f3bc37449eb155a4e2b828377223fde4934f955e)
- 組織化の後、私たちは
![{\displaystyle s[0]=\int _{-1/2}^{1/2}H_{d}(F)\,dF}](https://wikimedia.org/api/rest_v1/media/math/render/svg/096cc338e767db2a79cfe43c0ed4a20595a3f13f)
![{\displaystyle s[n]=\int _{-1/2}^{1/2}\cos(2\pi nF)H_{d}(F)\,dF,\ {\text{ }}n\neq 0 の場合}](https://wikimedia.org/api/rest_v1/media/math/render/svg/34f050fc9578ce96c2b72229e07f6fab35a9d039)
- ステップ4:プレゼンテーションに戻る
![{\displaystyle s[n]}](https://wikimedia.org/api/rest_v1/media/math/render/svg/ffe878c033cc70d1aa3ffbd156394791aa8dffde)
そして![{\displaystyle h[n]=0{\text{ }}n<0{\text{ かつ }}n\geq N の場合}](https://wikimedia.org/api/rest_v1/media/math/render/svg/5974fd7cea50349150149cdfb8db62e72377d328)
さらに、重み関数を追加することで、必要に応じて通過帯域と阻止帯域の重要性を別々に扱うことができます。
すると、MSE誤差は次のようになります。


移動平均の例
移動平均フィルタは非常に単純な FIR フィルタです。特にデシメーションまたはsinc-in-frequencyが続く場合は、ボックスカーフィルタと呼ばれることもあります。フィルタ係数 は、次の式で求められます。


より具体的な例として、フィルタの順序を選択します。

結果として得られるフィルタのインパルス応答は次のようになります。
![{\displaystyle h[n]={\frac {1}{3}}\delta [n]+{\frac {1}{3}}\delta [n-1]+{\frac {1}{3}}\delta [n-2]}](https://wikimedia.org/api/rest_v1/media/math/render/svg/17e21482fe3a56f5731d5e4407d08ff23aee6e2e)
右のブロック図は、以下で説明する 2 次移動平均フィルタを示しています。伝達関数は次のとおりです。

次の図は、対応する極零点図を示しています。零周波数(DC)は(1, 0)に対応し、正の周波数は円の周りを反時計回りに進み、ナイキスト周波数(−1, 0)に達します。2つの極は原点にあり、2つの零点は、、にあります。


正規化された周波数 ωに関する周波数応答は次のようになります。

の振幅と位相成分が図にプロットされています。しかし、このようなプロットは、インパルス応答の離散フーリエ変換(DFT) を行うことによっても生成できます。 [B]
また、対称性のため、フィルタ設計や表示ソフトウェアでは [0, π] 領域のみが表示されることがよくあります。振幅のプロットは、移動平均フィルタが 1 に近いゲインで低周波数を通過させ、高周波数を減衰させることを示しています。したがって、これは大まかなローパス フィルタです。位相のプロットは、振幅が 0 になる 2 つの周波数での不連続性を除いて線形です。不連続性のサイズは π で、符号の反転を表しています。最後の図に示すように、これらは線形位相の特性には影響しません。

参照
注記
- ^ 例外は MATLAB です。半サイクル/サンプル単位のナイキスト周波数は であるため、 の周期性が優先されます。これは、0 からナイキスト周波数までの間隔を表示するプロット ソフトウェアにとって便利な選択肢です。

- ^ § DTFTのサンプリングを参照してください。
参考文献
- ^ オッペンハイム、アラン V.、ウィルスキー、アラン S.、ヤング、イアン T.、1983: 信号とシステム、p. 256 (ニュージャージー州エングルウッドクリフス: プレンティスホール社) ISBN 0-13-809731-3
- ^ ラビナー、ローレンス R.、ゴールド、バーナード、1975 年: デジタル信号処理の理論と応用 (ニュージャージー州エングルウッド クリフス: プレンティス ホール社) ISBN 0-13-914101-4
- ^ AE Cetin、ON Gerek、Y. Yardimci、「FFT アルゴリズムによる等リップル FIR フィルタ設計」、IEEE Signal Processing Magazine、pp. 60–64、1997 年 3 月。