Main Content

マルチレート フィルター バンクの実装

関数 upfirdn は、整数比 P/Q によって信号のサンプリング レートを変更します。この関数は、次の処理を行う 3 つの逐次実行型システムの結果を計算します。

  • 整数係数 pによるアップサンプリング (0 の挿入)

  • FIR フィルター h によるフィルター処理

  • 整数係数 q によるダウンサンプリング

たとえば、信号のサンプル レートを 44.1 kHz から 48 kHz に変更するには、まず、最小の整数変換比 p/q を求めます。次のように設定します。

d = gcd(48000,44100);
p = 48000/d;
q = 44100/d;

この例では、p = 160 q = 147 になります。次に以下のように入力して、サンプル レートの変換を実行します。

y = upfirdn(x,h,p,q)

このカスケード式の操作は、ポリフェーズ フィルター法を使用することで効率的に行われ、マルチレート フィルターの中心的概念をなしています。リサンプリングの結果の質は、FIR フィルター h の質に依存することに注意してください。

フィルター バンクは、upfirdn を使用し、フィルター h が各列に 1 つの FIR フィルターをもつ行列であることを許可することで実装できます。信号ベクトルが独立に各 FIR フィルターに渡され、行列状の出力信号が返されます。

マルチレート フィルター処理 (固定フィルター使用) を行う他の関数には、resampleinterpdecimate などがあります。