-1

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 つのステップがあるためです。最初に何をすべきか、フィルタリングしてからダウンサンプリングするべきか理解できませんか? または、両方を組み合わせて行う方法はありますか?

4

1 に答える 1

2

各ポイントを計算するコードがあります。任意の点についてi、そのコードは と のデータを使用しx[i-j](h[j]の値をループj)、結果を に書き込みますy[i]

ダウンサンプリングの場合、すべてのポイントは必要ありませんy[i]。それらのいくつかだけが必要です。iしたがって、 を指定して、同じデータを使用しx[i-j]h[j]出力値を計算するコードを記述します。ただし、 のすべての値に対してそれを行う代わりにi、デシメーション ファクターの倍数に対してのみ実行し (名前が であるdとします)、結果をy[i/d]の代わりに に書き込みy[i]ます。

于 2013-02-22T16:41:19.853 に答える