design_biquad (1)

Design filtre biquad.


Prototype

FRat<float> design_biquad(cstring type, float f, float Q, float gain_dB=0)

Paramètres

typeType de filtre ("lp", "hp", "bp", "sb", ...).
fFréquence de coupure (ou centrale pour les filtres passe ou stoppe bande) normalisée, entre 0 et 0,5.
QFacteur de qualité (note : pour \(Q>1/\sqrt(2)\sim 0{,71}\), il y aura une résonnance).
gain_dBGain, en dB, pour les filtres de type résonnance ou plateau.

Description

Ces filtres RII du second ordre sont adaptés de prototypes analogiques via la transformée bilinéaire.

Les prototypes analogiques sont les suivant (pour une pulsation de coupure de 1 radian/s, et \(Q\) étant le facteur de qualité) :

  • Filtre passe-bas : \[ H(s) = \frac{1}{s^2+\frac{1}{Q}s+1} \]
  • Filtre passe-haut : \[ H(s) = \frac{s^2}{s^2+\frac{1}{Q}s+1} \]
  • Filtre passe-bande : \[ H(s) = \frac{s/Q}{s^2+\frac{1}{Q}s+1} \]
  • Filtre coupe-bande : \[ H(s) = \frac{s^2+1}{s^2+\frac{1}{Q}s+1} \]

Exemple : filtres passe-bas, avec différentes valeurs pour le facteur de qualité

    Figure f;
    pour(auto Q: {0.5f, 1.0f/std::sqrt(2.0f), 1.0f, 2.0f})
    {
      soit h = design_biquad("pb", 0.25, Q);
      f.plot(frmag(h), "", "Q={:.2f}", Q);
    }


Bibliographie

Voir aussi

design_biquad (2)