У меня есть биквадонный фильтр, который я хочу использовать с различными типами фильтров.
для вычисления коэффициентов биквад для однополюсного нижнего прохода с топологией Баттерворта Я использую следующее:
**A0** = (1.0/(1.0 + sqrt(2.)*(1.0/tanh(pi*(F/SR))) + (1.0/tanh(pi*(F/SR))) * (1.0/tanh(pi*(F/SR)))))
**A1** = (1.0/(1.0 + sqrt(2.)*(1.0/tanh(pi*(F/SR))) + (1.0/tanh(pi*(F/SR))) * (1.0/tanh(pi*(F/SR))))) * 2.
**A2** = (1.0/(1.0 + sqrt(2.)*(1.0/tanh(pi*(F/SR))) + (1.0/tanh(pi*(F/SR))) * (1.0/tanh(pi*(F/SR)))))
**B1** = 2.0*(1.0/(1.0 + sqrt(2.)*(1.0/tanh(pi*(F/SR))) + (1.0/tanh(pi*(F/SR))) * (1.0/tanh(pi*(F/SR))))) * (1.0 - (1.0/tanh(pi*(F/SR)))*(1.0/tanh(pi*(F/SR))))
**B2** = (1.0/(1.0 + sqrt(2.)*(1.0/tanh(pi*(F/SR))) + (1.0/tanh(pi*(F/SR))) * (1.0/tanh(pi*(F/SR))))) * (1.0 - sqrt(2.0) * (1.0/tanh(pi*(F/SR))) + (1.0/tanh(pi*(F/SR)))*(1.0/tanh(pi*(F/SR))))
У меня также есть работа в высокочастотном, полосовом и масляном диапазонах Butterworth. (и, конечно же, «классические» биквадические коэффициенты)
, чтобы сделать то же самое для других типов фильтров, таких как эллиптический, чебычевский, или что бы то ни было, я пытался получить код в форме, которая мне нужна, из сравнения существующихкод, например, из Matlab - но я не могу заставить его работать вообще.
Может ли кто-нибудь предоставить мне правильную математику для любых других типов фильтров аналогично описанному выше?
(F = частота в герцах, которая является единственной переменной / входом для этого выражения)