Berechnen Sie mithilfe der Funktionen response und fftfilt die Ausgabe eines FIR- oder IIR-Filters durch direkte Auswertung der Faltung. Die Funktion gibt einen komplexen Vektor von Ausgaben der Länge n zurück.
Das von diesen Funktionen verwendete Verfahren wird in den meisten Lehrwerken zur Signalverarbeitung dargestellt. Vgl. z.B. A.V. Oppenheim und R. W. Schafer, Discrete-Time Signal Processing, S. 556-558, 1989.
IIR-Tiefpassfilterordnung
1. Definieren Sie ein Eingabesignal mit einer niederfrequenten und einer hochfrequenten Komponente.
2. Berechnen Sie die ersten 100 Stufen der Antwort eines Butterworth-Tiefpassfilters zweiter Ordnung mit Grenzfrequenz f.
Die Grenze muss entsprechend der Funktionsbeschreibung zwischen 0 und 0.5 liegen.
3. Verwenden Sie die Funktion iirlow, um die Koeffizienten der Übertragungsfunktion zu erhalten.
4. Verwenden Sie die Funktion response, um die Antwort des Filters abzurufen.
Das Antwortsignal YA ist im Vergleich zum ursprünglichen Signal x glatter, hat eine kleinere Amplitude und weist eine geringfügige Zeitverschiebung auf.
5. Geben Sie einen Butterworth-Tiefpassfilter sechster Ordnung mit der gleichen Grenzfrequenz f an. Die Funktion response verwendet die Ausgabe des ersten Abschnitts als Eingabe für den zweiten Abschnitt, dessen Ausgabe als Eingabe für den dritten Abschnitt usw.
Der Filter höherer Ordnung liefert eine weitaus glattere Antwort, ist effektiver bei der Filterung der hohen Frequenz, erzeugt eine größere Zeitverschiebung und einen schärferen Übergang an der Grenzfrequenz.
Nichtrekursiver Bandpassfilter
1. Konstruieren Sie einen nichtrekursiven Bandpassfilter F, um die höhere der beiden oben definierten Signalfrequenzen zu übertragen.
2. Berechnen Sie die Koeffizienten für einen Bandpassfilter der Länge 51, dessen Durchlassbereich zwischen der oben angegebenen tiefen und hohen Frequenz liegt, und verwenden Sie ein Blackman-Fenster (letztes Argument von 6).
3. Berechnen Sie die durch den Filter verursachte Verzögerung.
4. Berechnen Sie die ersten 100 Stufen mit der Funktion response.
Obwohl der Filter nach dem Start nicht sofort überträgt, wählt er die hohe Frequenz (f2=0.5; T=5) sehr präzise aus.
Nichtrekursiver Bandpassfilter 2
Zeigen Sie, dass der folgende nichtrekursive Tiefpassfilter für verschiedene Frequenzen in seinem Durchlassbereich keine Phasenverschiebung aufweist.
1. Definieren Sie zwei Eingabesignale.
2. Definieren Sie die Grenzfrequenz des nichtrekursiven Filters und die Anzahl der Koeffizienten.
3. Berechnen Sie die Koeffizienten mit einem sich verjüngenden Hanning-Fenster.
4. Berechnen Sie die durch den Filter verursachte Verzögerung.
5. Definieren Sie die beiden verzögerten Eingabesignale.
6. Plotten Sie das erste verzögerte Eingabesignal x1d und die Antwort des Filters auf x1.
Die beiden Signale sind identisch und haben keine Phasenverschiebung.
7. Plotten Sie das zweite verzögerte Eingabesignal x2d und die Antwort des Filters auf x2.
Die beiden Signale sind identisch und haben keine Phasenverschiebung.
response für Faltungen verwenden
Wenn das Filter-Array eine Spalte enthält, führt die Funktion response eine Faltung aus. Damit stellt diese Funktion eine Alternative zur FFT-Funktion convolve dar. Die Antwort erfolgt wesentlich schneller für einen kleinen ersten Teil der Faltung von zwei langen Sequenzen.
1. Definieren Sie einen Bereich und zwei Arrays, die mit positiven Zufallszahlen von 0 bis 1 gefüllt sind.
2. Wenden Sie die Funktion convolve auf die beiden Arrays an.
3. Verwenden Sie die Funktion response, um die ersten 8 Stufen der Antwort zu erhalten.
Die beiden Arrays sind identisch.
Vergleichen der Ausgabe der Funktionen response und fftfilt
Zeigen Sie, dass die mit den Funktionen response und fftfilt erhaltenen Ergebnisse gleichwertig sind.
1. Definieren Sie einen Bereich und zwei Frequenzen.
2. Definieren Sie das Eingabesignal in Bezug auf f1 und f2.
3. Erstellen Sie einen nichtrekursiven Tiefpassfilter mit einer Grenzfrequenz f, verjüngt mit einem Hanning-Fenster.
4. Berechnen Sie die Filterantwort auf das Eingabesignal.
5. Wenden Sie die Funktion fftfilt auf das Eingabesignal an, und rufen Sie die ersten 64 Stufen ab.
y_f ist ein Vektor komplexer Elemente.
6. Plotten Sie das Ergebnis der Faltung des Eingabesignals mit der Übertragungsfunktion des Filters und das Antwortsignal. Die beiden Spuren überlappen sich vollständig.