IIRFilter (FPScript)

21.09.2021

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:

Konstante

Bedeutung

FILTER_BESSEL

Filter mit flachem Durchlassbereich und relativ geringer Steilheit.

FILTER_BUTTERWORTH

Filter mit flachem Durchlassbereich und größerer Steilheit, jedoch mit Überschwingern bei steilflankigen Signalen.

FILTER_CHEBYSHEV

Filter mit großer Steilheit. Die Welligkeit für den Durchlassbereich lässt sich unter PassBand einstellen.

FILTER_INVERSECHEBYSHEV O

Filter mit großer Steilheit. Die Dämpfung für den Sperrbereich lässt sich unter StopBand einstellen.

O Diese Konstante steht nur zur Verfügung, wenn die Option Digitale Filter lizensiert wurde.

FILTER_ELLIPTIC O

Auch als Cauer-Filter bekannt. Sowohl die Welligkeit im Durchlassbereich als auch die Dämpfung im Sperrbereich lassen sich einstellen.

O Diese Konstante steht nur zur Verfügung, wenn die Option Digitale Filter lizensiert wurde.

FILTER_LEGENDRE O

Auch als Optimum-L-Filter bekannt. Besitzt eine größere Steilheit als der Butterworth-Filter aber im Gegensatz zum Tschebyscheff-Filter keine Welligkeit im Durchlassbereich.

O Diese Konstante steht nur zur Verfügung, wenn die Option Digitale Filter lizensiert wurde.

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:

Konstante

Bedeutung

FILTER_LOWPASS

Tiefpass, lässt die Frequenzen unterhalb der Eckfrequenz durch.

FILTER_HIGHPASS

Hochpass, lässt die Frequenzen oberhalb der Eckfrequenz durch.

FILTER_BANDPASS

Bandpass, lässt die Frequenzen zwischen der ersten und zweiten Eckfrequenz durch.

FILTER_BANDSTOP

Bandsperre, lässt die Frequenzen unterhalb der ersten und oberhalb der zweiten Eckfrequenz durch.

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:

Konstante

Bedeutung

FILTER_DELTA

Für den Durchlassbereich bzw. den Sperrbereich wird der Fehler angegeben.

FILTER_DB

Für den Durchlassbereich wird die Welligkeit des Filters und für den Sperrbereich die Dämpfung in Dezibel angegeben.

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:

Konstante

Bedeutung

FILTER_COEFFICIENTS

Als Ergebnis werden die Filterkoeffizienten zurückgegeben.

FILTER_POLESANDZEROS O

Als Ergebnis werden die Pol- und Nullstellen zurückgegeben.

O Diese Konstante steht nur zur Verfügung, wenn die Option Digitale Filter lizensiert wurde.

FILTER_COEFFICIENTSCASCADED

Als Ergebnis werden die Filterkoeffizienten der kaskadierten IIR-Filter 2. Ordnung zurückgegeben.

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.

Siehe auch

Filter-Funktion

FIRFilterEquiripple-Funktion

FIRFilterWindow-Funktion

DCRemovalFilter-Funktion

Option Digitale Filter

Analyseobjekt IIRFilter

Tutorial Filter

Artikel teilen oder als Email versenden:

Diese Beiträge könnten Sie ebenfalls interessieren