vDSP_biquad関数を1極フィルタとして使用したいと考えています。vDSP_biquadを1極フィルタとして使用する
私の一方の極フィルタは次のようになります。これは一方の極には素晴らしい作品が、もちろん私が使用したい理由である、最適化されていない
b1 = exp(-2.0 * M_PI * (_frequency/sampleRate));
a0 = 1.0 - b1;
output[i] = onePole->z1 = input[i] * onePole->a0 + onePole->z1 * onePole->b1;
それをスピードアップするためにフレームワークを加速する。
vDSP_biquadはBiquad実装のダイレクトフォームIIを使用しているため、係数を1ポールフィルタとして使用できるように設定する必要があります。 https://en.wikipedia.org/wiki/Digital_biquad_filter#Direct_form_2
filter->omega = 2 * M_PI * freq/sampleRate;
filter->b1 = exp(-filter->omega);
filter->b0 = 1 - filter->b1;
filter->b2 = 0;
filter->a1 = 0;
filter->a2 = 0;
ただし、これは1つの極フィルタとしては機能しません。 (biquadの実装はうまくいきますが、他の多くのフィルタタイプに使用していますが、これらの係数は必要な効果がありません)。
私は間違っていますか?
加速器などを使用して1極フィルタを最適化する他の方法についても聞いてみましょう。
感謝。整理するのに1分ほどかかりましたが、小さな誤りがあります。ここではa1は負であるため、b0 = 1.0 + a1 – olynoise
@olynoiseである必要があります。 – Taylor