IIRFilter (FPScript)
Berechnet die Zähler- und Nennerkoeffizienten bzw. die Pol- und Nullstellen eines Infinite Impulse Response Filters (IIR-Filters).
Syntax
IIRFilter(Filter, Type, [ Order ], CutOffFrequencies, [ PassBand = 3 ], [ StopBand = 40 ], [ Mode = FILTER_DB ], [ Result = FILTER_COEFFICIENTS ] [ , SamplingRate ])
Die Syntax der IIRFilter-Funktion besteht aus folgenden Teilen:
Teil |
Beschreibung |
||||||||||||||
---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|
Filter |
Gibt die Filtercharakteristik an. Das Argument Filter kann folgende Werte haben:
Ist das Argument eine Liste, dann wird deren erstes Element entnommen. Ist dies wieder eine Liste, dann wird der Vorgang wiederholt. |
||||||||||||||
Type |
Gibt den Filtertyp an. Das Argument Type kann folgende Werte haben:
Ist das Argument eine Liste, dann wird deren erstes Element entnommen. Ist dies wieder eine Liste, dann wird der Vorgang wiederholt. |
||||||||||||||
Order |
Gibt die Filterordnung an. Erlaubt sind die Ordnungen von 1 bis 20. Das Argument ist optional, wenn statt der Eckfrequenz die Durchlassgrenze und die Sperrgrenze für die Übergangsbereiche von Durchlassbereich zu Sperrbereich und umgekehrt angegeben werden. In diesem Fall findet eine Schätzung der optimalen Filterordnung statt. Für den Bessel- und den Legendre-Filter muss die Ordnung angegeben werden. Erlaubte Datenstrukturen sind Einzelwert. Es sind alle ganzzahligen Datentypen erlaubt. Der Wert muss größer gleich 1 und kleiner gleich 20 sein. Ist das Argument eine Liste, dann wird deren erstes Element entnommen. Ist dies wieder eine Liste, dann wird der Vorgang wiederholt. |
||||||||||||||
CutOffFrequencies |
Gibt die Eckfrequenzen bzw. die Übergangsbereiche des Filters an. Die Frequenzen müssen zwischen 0 und der halben Abtastfrequenz bzw. zwischen 0 und 0,5, der halben normierten Abtastfrequenz, liegen. Wird die Ordnung angegeben, so muss für Tiefpass bzw. Hochpass ein skalarer Einzelwert und für Bandpass und Bandsperre eine Datenreihe mit zwei Werten angeben werden. Zur Schätzung der Filterordnung müssen die Übergangsbereiche als Datenmatrix mit je 2 Werten angegeben werden. Erlaubte Datenstrukturen sind Einzelwert, Datenreihe und Datenmatrix. Es sind alle reellen Datentypen erlaubt außer Kalenderzeit und Zeitspanne. Ist das Argument eine Liste, dann wird deren erstes Element entnommen. Ist dies wieder eine Liste, dann wird der Vorgang wiederholt. |
||||||||||||||
PassBand |
Gibt die Welligkeit des Tschebyscheff- bzw. des Elliptischen Filters im Durchlassbereich in Dezibel bzw. den Fehler im Durchlassbereich an. Erlaubte Datenstrukturen sind Einzelwert. Es sind alle reellen Datentypen erlaubt außer Kalenderzeit und Zeitspanne. Ist das Argument eine Liste, dann wird deren erstes Element entnommen. Ist dies wieder eine Liste, dann wird der Vorgang wiederholt. Wenn das Argument nicht angegeben wird, wird es auf den Vorgabewert 3 gesetzt. |
||||||||||||||
StopBand |
Gibt die Dämpfung des Inversen Tschebyscheff- bzw. des Elliptischen Filters im Sperrbereich in Dezibel bzw. den Fehler im Sperrbereich an. Erlaubte Datenstrukturen sind Einzelwert. Es sind alle reellen Datentypen erlaubt außer Kalenderzeit und Zeitspanne. Ist das Argument eine Liste, dann wird deren erstes Element entnommen. Ist dies wieder eine Liste, dann wird der Vorgang wiederholt. Wenn das Argument nicht angegeben wird, wird es auf den Vorgabewert 40 gesetzt. |
||||||||||||||
Mode |
Gibt an, ob die Dämpfung / Welligkeit in Dezibel oder der Fehler angegeben wird. Das Argument Mode kann folgende Werte haben:
Ist das Argument eine Liste, dann wird deren erstes Element entnommen. Ist dies wieder eine Liste, dann wird der Vorgang wiederholt. Wenn das Argument nicht angegeben wird, wird es auf den Vorgabewert FILTER_DB gesetzt. |
||||||||||||||
Result |
Gibt an, ob als Ergebnis die Filterkoeffizienten des Filters, die Koeffizienten der Kaskade von Filtern 2. Ordnung oder die Pol- und Nullstellen zurückgegeben werden. Die Darstellung als Filterkaskade bietet den Vorteil größerer numerischer Stabilität bei höheren Ordnungen. Das Argument Result kann folgende Werte haben:
Ist das Argument eine Liste, dann wird deren erstes Element entnommen. Ist dies wieder eine Liste, dann wird der Vorgang wiederholt. Wenn das Argument nicht angegeben wird, wird es auf den Vorgabewert FILTER_COEFFICIENTS gesetzt. |
||||||||||||||
SamplingRate |
Gibt die Abtastrate des zu filternden Signals an. Wird dieses Argument weggelassen, so müssen als Grenzfrequenzen die normierten Frequenzen von 0 bis 0,5 angegeben werden. Erlaubte Datenstrukturen sind Einzelwert. Es sind alle reellen Datentypen erlaubt außer Kalenderzeit und Zeitspanne. Der Wert muss größer 0 sein. Ist das Argument eine Liste, dann wird die Funktion für jedes Element der Liste ausgeführt und das Ergebnis ist ebenfalls eine Liste. |
Anmerkungen
Die Zähler- und Nennerkoeffizienten werden als Liste mit zwei Elementen b und a zurückgegeben. Diese liegen entweder als Datenreihen oder als dreizeilige Datenmatrizen für die Darstellung als Kaskade von Filtern 2. Ordnung vor. Verwenden Sie die Funktion Filter, um Daten mit dem berechneten Filter zu filtern.
Die Welligkeit für den Durchlassbereich kann für den Tschebyscheff- und den Elliptischen Filter in Dezibel angeben werden. Die Dämpfung im Sperrbereich kann für den Inversen Tschebyscheff-Filter und den Elliptischen Filter in Dezibel angegeben werden. Alternativ kann der relative Fehler für den Durchlass- bzw. den Sperrbereich angegeben werden. Alle Werte werden als Betragswerte angegeben.
Es gilt: Welligkeit = | 20 log( 1 / (1 - relativer Fehler Durchlassbereich)) |
Dämpfung = | 20 log( relativer Fehler Sperrbereich ) |
Ein relativer Fehler von 0,1 im Sperrbereich ist äquivalent zu einer Dämpfung von 20 Dezibel.
Hinweis Eine Erhöhung der Ordnung bewirkt eine Vergrößerung der Steilheit des Filters.
Verfügbarkeit
FlexPro Basic, Professional, Developer Suite
Beispiele
IIRFilter(FILTER_BUTTERWORTH, FILTER_LOWPASS, 5, 0.2) |
Berechnet die Koeffizienten eines Butterworth-Tiefpass-Filters 5. Ordnung mit der normierten Eckfrequenz 0,2. |
Filter(Signal, IIRFilter(FILTER_BUTTERWORTH, FILTER_LOWPASS, 5, 0.5 kHz, , , , , SamplingRate(Signal)), TRUE) |
Filtert ein Signal mit Phasenkorrektur mit einem Tiefpassfilter mit 500 Hz Eckfreqeunz. |
IIRFilter(FILTER_ELLIPTIC, FILTER_BANDSTOP, 5, {0.1, 0.2}, 2 dB, 45 dB) |
Berechnet die Koeffizienten einer Bandsperre eines Cauer-Filters mit 2 dB Welligkeit und 45 dB Dämpfung. |
IIRFilter(FILTER_CHEBYSHEV, FILTER_HIGHPASS,, {{0.1, 0.15}}, 0.01, 0.01, FILTER_DELTA) |
Schätzt die Filterordnung und berechnet die Koeffizienten einer Tschebyscheff-Hochpass-Filters mit dem Fehler von 0,01 im Sperr- und Durchlassbereich mit der Sperrgrenze 0,1 und der Durchlassgrenze 0,15. |