この回答の目的のために、Matlabの用語を使用して、入力サンプル間にゼロを挿入するプロセスとして「アップサンプリング」を定義し、m - 1個のエイリアスを削除するためのアップサンプリングとフィルタリングを組み合わせたプロセスとして「補間」を定義します(mは補間係数です)アップサンプリングが導入します。アップサンプリングがエイリアスを導入する方法/理由の説明については、このスレッドを参照してください。m−1m−1m
エイリアスを取り除くためにローパスフィルターを使用して、補間を完了することができることを理解することが重要です。ただし、一部のフィルターは、補間で使用すると利点があります。以下に、補間フィルタリングのさまざまなフレーバーについて説明します。
FIRフィルター
FIRフィルターの内挿は、アップサンプリングとエイリアスフィルターを1つのステップに組み合わせるため、効率的です。これは例で最も簡単に見られます。データシーケンスあり、それを2倍に補間したいとします。最初のステップは、2倍にアップサンプリングすることです。これは、から元のデータ系列変化X 0、X 1、。。。X NをするX 0、0 、X 1、0 、。。。X N。x[n]x0,x1,...xNバツ0、0 、x1、0 、. 。。バツN
ここで、エイリアスを削除するために使用するローパスFIRフィルターがあるとします。アップサンプリングされたデータシーケンスをフィルターで畳み込むと、フィルタータップの半分はゼロ以外のサンプルによって刺激され、タップの半分はゼロサンプルに対応するため非アクティブになります。フィルタがデータを通過するときに、刺激される半分と非アクティブな半分が前後に反転します。これら2つのタップセットは、フィルターフェーズと呼ばれることもあります。h[n]
この同じ効果は、アップサンプリングを排除し、補間FIRフィルターで元のデータシーケンスをフィルター処理することで暗黙的に達成できます。補間FIRフィルターは、すべての入力サンプルに対して出力を生成します。すべてのm出力について、フィルターは同じc e i l (K / m )入力サンプルで動作します(Kはフィルタータップの数、「ceil」は天井関数です)。mmceil(K/m)
例は、これがどのように機能するかをうまく説明しています。6タップフィルターがあり、2倍に補間しているとします。フィルタータップは[1 -2 4 4 -2 1]です。文字通り補間してからフィルター処理すると、サンプルとフィルタータップは次のように整列します(完全にオーバーラップした後)。
0:1x2:−20:4x1:40:−2x0:1
次のサンプル...
x3:10:−2x2:40:4x1:−20:1
次のサンプル...
0:1x3:−20:4x2:40:−2x1:1
等々。補間フィルタのポイントは、実際にゼロの挿入をスキップし、代わりにその時点で使用するタップのセットを交互に入れ替えることです。したがって、上記のシーケンスは次のようになります。
バツ2:− 2バツ1:4バツ0:1
バツ3:1バツ2:4バツ1:− 2
バツ3:− 2バツ2:4バツ1:1
ゼロオーダーホールド
ゼロ次ホールド補間器は、各サンプルを回単純に繰り返すものです。2つのゼロ次ホールド補間変換の係数にxは0、xは1、。。。X NのにX 0は、xは0、xは1を、xは1、。。。x N、x Nm − 1バツ0、x1、。。。バツNバツ0、x0、x1、x1、。。。バツN、xN。この方法は、コーディングと計算の両方の面で実装が非常に簡単であるため、魅力的です。
問題は、ローパスフィルタリングが非常に悪いことです。ゼロホールド補間がFIR補間の特殊なケースであることを認識すると、それを見ることができます。これは、アップサンプリングとそれに続く幅の長方形フィルターに対応します。長方形フィルターのフーリエ変換はsinc関数であり、かなり粗末なローパスフィルターです。補正FIRフィルターを使用すると、その粗さを修正できますが、それを行う場合は、まず最初に適切なローパスフィルターを使用してください。m
ファーストオーダーホールド
バツ0、x1、。。。バツNバツ0、x0+ x12、x1、x1+ x22、。。。バツN。
ゼロ次ホールド補間器と同様に、1次ホールド補間器はFIR補間の特殊なケースです。これは、三角形フィルタを使用したアップサンプリングとフィルタリングに対応しています。2因子補間の場合、フィルターは[ 121 12]、3因子補間の場合、フィルターは [ 13231 2312]、 等々。
三角形フィルターは、畳み込まれた2つの長方形フィルターであり、周波数領域で平方されたsincに対応します。これはゼロ次ホールドからの明確なステップアップですが、それでも素晴らしいことではありません。
IIRフィルター
補間IIRフィルターを使用したことはないので、あまり説明しません。通常のフィルタリングと同じ引数が適用されると仮定します-IIRフィルターはより効率的で、不安定になる可能性があり、線形位相を持たない、などです。しかし、私はそれについて間違っている可能性があります。
FFT補間
あまり一般的ではありませんが、私はこれを投げます(もちろん、ゼロホールドも一般的ではないと思います)。 このスレッドでは、FFTリサンプリングについて説明します。リサンプリングは、補間と間引きの両方です。
高次ホールド
2次ホールド補間器は、通常「2次補間器」と呼ばれます。それらは非線形であるため、線形のFIRフィルターとして実装できません。私はそれらの背後にある数学をよく理解していないので、それらのパフォーマンスについては説明しません。ただし、これらは信号処理以外では一般的であると思います。
高次(3つ以上)のメソッドも存在します。これらは「多項式回帰」と呼ばれます。
編集:
Cascade Integrator Comb(CIC)フィルター
CIC Filtersについて言及するのを忘れました。CICフィルターは2つの理由で使用されます:加算器/減算器のみを使用します(乗算が高速で安価になった今ではそれほど大したことではありません)。欠点は、基本的にカスケードされた長方形フィルターの効率的な実装であるため、前述の長方形フィルターのすべての欠点があります。CIC補間器には、ほとんどの場合、CICによって導入された歪みを相殺するために信号を事前に歪ませる補償FIRフィルターが先行します。サンプルレートの変更が十分に大きい場合、プリディストーションフィルターのコストはそれだけの価値があります。