Algorithmus (IIR-Filter)

IIR-Filter (Infinite Impulse Response) sind digitale Filter mit Feedback, wie im folgenden Bild gezeigt.

Image:IIR_Filter_1.png

Digitale Filter werden auch häufig in Form einer Differenzgleichung beschrieben, die das Verhältnis zwischen Ausgabe- und Eingabesignal definiert.

b_0*x(n)+b_1*x(n-1)+ \cdots +b_N*x(n-N)-a_0*y(n)-a_1*y(n-1)- \cdots -a_M*y(n-M) = 0

Dann:

y(n) = \frac{1}{a_0} \left ( b_0*x(n)+b_1*x(n-1)+ \cdots +b_N*x(n-N)-a_1*y(n-1)-a_2*y(n-2)- \cdots -a_M*y(n-M) \right ) = \frac{1}{a_0} \left ( \sum_{i=0}^N b_i*x(n-i) - \sum_{j=1}^M a_j*y(n-j) \right )

wobei a_0 \ne 0, N die vorgekoppelte Filterordnung, bi der vorgekoppelte Filterkoeffizient, M die rückgekoppelte Filterordnung, ai der rückgekoppelte Koeffizient, x(n) das Eingabesignal und y(n) das Ausgabesignal ist. Der Term \sum_{j=1}^M a_j*y(n-j) ist die Rückkopplung.

Darstellung von Digitalfiltern

In Origin gibt es vier Ausgaben für die Darstellung des IIR-Filters.

IIR-Filter entwerfen

Die gängige Vorgehensweise, um einen IIR-Filter zu entwerfen, ist:

  1. Filterspezifikation festlegen.
  2. Legen Sie den analogen Filterprototypen des Tiefpasses fest. Die verfügbaren Prototypen, die von Origin unterstützt werden, sind Butterworth, Tschebyscheff Typ I, Tschebyscheff Typ II und Elliptisch.
  3. Methode Quadrierte Betragsantwortfunktion Übertragungsfunktion von analogen Filtern
    Butterworth |H_a(j \Omega)|^2 = \frac{1}{1+ \Omega^{2N}} H_a(s) = \frac{q(s)}{p(s)} = \frac{g}{(s-p_1)(s-p_2)\cdots (s-p_N)} = \frac{g}{\prod_{k=1}^N (s-p_k)}
    Tschebyscheff Typ I |H_a(j \Omega)|^2 = \frac{1}{1+ \varepsilon^2 T_N^2(\Omega)} H_a(s) = \frac{q(s)}{p(s)} = \frac{g}{(s-p_1)(s-p_2)\cdots (s-p_N)} = \frac{g}{\prod_{k=1}^N (s-p_k)}
    Tschebyscheff Typ II |H_a(j \Omega)|^2 = \frac{1}{1+ (\varepsilon^2 T_N^2(\frac{1}{\Omega}))^{-1}} = \frac{\varepsilon^2 T_N^2(\frac{1}{\Omega})}{1+ \varepsilon^2 T_N^2(\frac{1}{\Omega})} H_a(s) = \frac{q(s)}{p(s)} = g \frac{(s-q_1)(s-q_2)\cdots (s-q_N)}{(s-p_1)(s-p_2)\cdots (s-p_N)} = g \prod_{k=1}^N \frac{(s-q_k)}{(s-p_k)}
    Elliptisch |H_a(j \Omega)|^2 = \frac{1}{1+ \varepsilon^2 U_N^2(\Omega)} H_a(s) = \frac{q(s)}{p(s)} = g \frac{(s-q_1)(s-q_2)\cdots (s-q_N)}{(s-p_1)(s-p_2)\cdots (s-p_N)} = g \frac{\prod_{i=1}^N (s-q_i)}{\prod_{j=1}^N (s-p_j)}

    In der obenstehenden Tabelle ist die Frequenz, N die Filterordnung, \varepsilon die maximale Oszillation in der Passbandfrequenzantwort, TN die Tschebyscheff-Polynomiale, UN die Jacobische elliptische Funktion, g die Skalar-Verstärkung, s die Ebene der Laplace-Transformation, qk oder qi die Nullstelle und pk oder pj die Pole.

  4. Frequenztransformation für Analogfilter
  5. Transformieren Sie den Tiefpassfilter in einen Hochpass-, Bandpass- oder Bandsperrfilter mit der gewünschten Abschneidefrequenz. In Origin wird die Form Zustand-Raum in der Berechnung der Frequenztransformation verwendet. Nehmen Sie an, dass die ursprüngliche Übertragungsfunktion des Tiefpassfilters H(s') ist und die Übertragungsfunktion nach der Transformation H(s).

    • Tiefpass in Tiefpass - Ein analoger Tiefpassfilter mit einer Abschneidefrequenz von 1 rad/s wird in einen Tiefpassfilter mit einer festgelegten Abschneidefrequenz transformiert.
      H(s)= H(s')|_{s'=s/\omega_0}
    • Tiefpass in Hochpass
      H(s) = H(s')|_{s'=\omega_0/s}
    • Tiefpass in Bandpass
      H(s) = H(s')|_{s'= \frac{\omega_0}{B_{\omega}} \frac{(s/\omega_0)^2+1}{s/\omega_0}}
    • Tiefpass in Bandsperre
      H(s) = H(s')|_{s'= \frac{B_{\omega}}{\omega_0} \frac{s/\omega_0}{(s/\omega_0)^2+1}}

    wobei 0 = sqrt(1 * 2) die Mittenfrequenz ist, B = 2 - 1 die Bandbreite sowie 1 und 2 die untere bzw. oberen Bandkante sind.

  6. Konvertieren Sie einen Analogfilter in einen Digitalfilter.
  7. Um einen Analogfilter in einen Digitalfilter zu konvertieren, verwendet Origin die bilineare Transformation, die durch folgenden Ausdruck definiert ist:

    s = \frac{1-z^{-1}}{1+z^{-1}}

Vorwärts- und Rückwärtsfilterung

Origin lässt die Durchführung von Vorwärts- und Rückwärtsfilterung zu, was zu einer Nullphasenverzerrung führt. Zuallererst wird die Filterung der Daten in Vorwärtsrichtung durchgeführt und dann die gefilterten Daten umgekehrt, um sie rückwärts durch den Filter laufen zu lassen.