我希望能夠將vDSP_biquad功能用作單極濾波器。使用vDSP_biquad作爲單極濾波器
我的一個極濾波器是這樣的:
output[i] = onePole->z1 = input[i] * onePole->a0 + onePole->z1 * onePole->b1;
其中
b1 = exp(-2.0 * M_PI * (_frequency/sampleRate));
a0 = 1.0 - b1;
此一個極的偉大工程,但當然這不是最優化,這就是爲什麼我想使用加速框架加快速度。
由於vDSP_biquad使用biquad實現的直接形式II,在我看來,我應該能夠設置係數以將其用作單極點濾波器。 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;
但是,這不起到單極濾波器的作用。 (biquad的實現很好,我用它來處理許多其他的濾波器類型,只是這些係數沒有所需的效果)。
我在做什麼錯?
同時開放聽取其他方法來優化加速或其他方式的單極濾波器。
感謝。花了我一分鐘解決,但有一個小小的錯誤。因爲a1在這裏是負的,它需要是b0 = 1.0 + a1 – olynoise
@olynoise固定:) – Taylor