vDSP_biquad 함수를 단극 필터로 사용하고 싶습니다.vDSP_biquad를 단극 필터로 사용
내 하나 개의 극 필터는 다음과 같습니다 :이 하나의 극이 잘 작동하지만, 물론 내가를 사용하려는 이유입니다 최적화 아니에요
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 구현의 Direct Form 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;
그러나, 이것은 하나의 극 필터로 작동하지 않습니다. (biquad의 구현은 괜찮습니다. 다른 많은 필터 유형에도이 계수를 사용합니다.이 계수는 원하는 효과가 없습니다.)
내가 뭘 잘못하고 있니?
Accelerate 또는 기타 방법을 사용하여 1 극 필터를 최적화하는 다른 방법에 대해서도 열려 있습니다.
감사합니다. 정리하자면 잠시 시간이 걸렸지 만, 약간의 오류가 있습니다. 여기서 a1은 음수이므로 b0 = 1.0 + a1이어야합니다. – olynoise
@olynoise Fixed :) – Taylor