Beispiel: Nichtrekursive Filter durch Remez-Austausch
Die Funktion remez implementiert den Remez-Austauschalgorithmus für die Konstruktion nichtrekursiver Filter.
Siehe "Theory and Application of Digital Signal Processing" von Rabiner und Gold (Prentice-Hall, Inc.) sowie "Digital Filter Design" von Parks und Burrus (Wiley-Interscience) für eine Diskussion des Algorithmus und für Beispiele.
Tiefpassfilter
1. Definieren Sie die Antwort 1 im Durchlassband und 0 im Sperrband, und interpolieren Sie einen geraden Übergang zwischen den Kanten von Durchlass- und Sperrband.
Im Allgemeinen sollte die Anzahl an Punkten im Frequenzraster ungefähr das 8- bis 10fache der Filterlänge betragen, wobei die Frequenzen mit 0 beginnen und gleichmäßig bis etwas unter 0.5 ansteigen. Für die Definition der Antwort ist die Definition der Bandkanten und Gewichtungen erforderlich, die den Fehlern in jedem Band zugewiesen sind. Der Algorithmus minimiert den maximal gewichteten Fehler über den Frequenzbereich [0, 0.5].
2. Definieren Sie die Kanten für den Durchlassbereich und den Sperrbereich:
3. Definieren Sie die Gewichtung von Durchlassbereich, Sperrbereich und Übergangsbereich:
4. Definieren Sie eine Funktion, die die gewünschte Antwort als Frequenzfunktion angibt. Durch Auswertung an jedem Rasterpunkt wird der Response-Vektor erstellt.
5. Definieren Sie den Gewichtungsvektor, der jedem Rasterpunkt die Gewichtung für das entsprechende Band zuweist.
6. Verwenden Sie die Funktionen remez und length, um die Filterkoeffizienten zu berechnen:
7. Verwenden Sie die Funktion gain, um für diesen Filter mit ungerader Länge die maximalen Durchlassbereichs- und Sperrbereichsfehler zu berechnen, die durch den Zuwachs bei 0 und 0.5 angegeben werden:
8. Plotten Sie die Funktion und ihren Frequenzgang von 0 bis 0.5.
Die zehn Extremfrequenzen werden angezeigt einschließlich des Punkts, in dem die Linie (1 - δ1) die Durchlassbereichskante pb kreuzt, sowie des Punkts, in dem die Linie δ2 die Sperrbereichskante sb kreuzt. Der Fehler wechselt sich gleichmäßig für die extremalen Frequenzen in jedem Band ab. Um ein Beispiel anzuzeigen, in dem die beiden Fehler d ungleich sind, ändern Sie die Gewichtung des Sperrbands in den Filterspezifikationen oben zu .5.
Bandpassfilter
1. Definieren Sie eine response-Funktion, die konstruiert wird, indem Sie Funktionen für die Antwort in jedem Übergangsband und in dem Durchlassband hinzufügen.
2. Wenden Sie die Filterfunktion mithilfe des Vektoroperators gleichzeitig auf das gesamte Raster an. Die Gewichtung ist einheitlich.
3. Generieren Sie einen Filter mit 45 Koeffizienten:
4. Stellen Sie den Frequenzgang des Filters grafisch dar: