Cプログラミングを使用して多相フィルタを実装する方法を知っている人はいますか? ポリフェーズ フィルターは、フィルター処理とダウン サンプリングの組み合わせです。フィルター処理に Fir フィルターを使用し、指定されたデシメーション ファクターでダウン サンプリングします。
フィルタリングでは、入力信号とインパルス応答の畳み込みであることを理解しているので、畳み込み関数を呼び出すだけです。
簡単に言えば、コードは次のようになります。
for ( i = 0; i < sampleCount; i++ )
{
y[i] = 0; // set to zero before sum
for ( j = 0; j < kernelCount; j++ )
{
y[i] += x[i - j] * h[j]; // convolve: multiply and accumulate
}
}
問題は、この基本的なアルゴリズムをポリフェーズ フィルターに変換する方法です。これには、ダウン サンプリングとしてもう 1 つのステップがあるためです。最初に何をすべきか、フィルタリングしてからダウンサンプリングするべきか理解できませんか? または、両方を組み合わせて行う方法はありますか?