FIR-Filter, IIR-Filter und die lineare Konstantkoeffizienten-Differenzgleichung Causal Moving Average (FIR) Filter Wir diskutierten Systeme, bei denen jede Abtastung der Ausgabe eine gewichtete Summe von (bestimmten der) der Abtastwerte der Eingabe ist. Nehmen wir ein kausal gewichtetes Summensystem, wobei Kausal bedeutet, dass eine gegebene Ausgabeprobe nur von der aktuellen Eingangsabtastung und anderen Eingaben früher in der Sequenz abhängt. Weder lineare Systeme im Allgemeinen noch endliche Impulsantwortsysteme müssen kausal sein. Allerdings ist die Kausalität für eine Art von Analyse bequem, die sich bald erkundigen würde. Wenn wir die Eingaben als Werte eines Vektors x symbolisieren. Und die Ausgänge als entsprechende Werte eines Vektors y. Dann kann ein solches System geschrieben werden, wo die b-Werte auf die aktuellen und früheren Eingangsmuster angewendet werden, um die aktuelle Ausgabeprobe zu erhalten. Wir können an den Ausdruck als Gleichung denken, mit dem Gleichheitszeichen Bedeutung gleich oder als prozedurale Anweisung, mit dem Gleichheitszeichen Bedeutung Zuweisung. Er läßt den Ausdruck für jeden Ausgangssample als MATLAB-Schleife von Zuweisungsanweisungen schreiben, wobei x ein N-Längenvektor von Eingangsabtastwerten ist und b ein M-Längenvektor von Gewichten ist. Um mit dem Sonderfall am Anfang umzugehen, werden wir x in einen längeren Vektor einfügen, dessen erste M-1-Abtastwerte null sind. Wir schreiben die gewichtete Summe für jedes y (n) als ein inneres Produkt und werden einige Manipulationen der Eingaben (wie Umkehrung b) zu diesem Zweck durchführen. Diese Art von System wird oft als gleitender Durchschnittsfilter bezeichnet, aus offensichtlichen Gründen. Aus unseren früheren Diskussionen sollte klar sein, dass ein solches System linear und verschiebungsinvariant ist. Natürlich wäre es viel schneller, die MATLAB-Faltungsfunktion conv () anstelle unseres mafilt () zu verwenden. Anstatt die ersten M-1-Abtastwerte der Eingabe als Null zu betrachten, könnten wir sie als die gleichen M-1-Samples ansehen. Dies ist das gleiche wie die Behandlung der Eingabe als periodisch. Nun benutze cmafilt () als den Namen der Funktion, eine kleine Modifikation der früheren mafilt () - Funktion. Bei der Bestimmung der Impulsantwort eines Systems gibt es gewöhnlich keinen Unterschied zwischen diesen beiden, da alle nicht initialen Samples der Eingabe null sind: Da ein solches System linear und verschiebungsinvariant ist, wissen wir, dass seine Wirkung auf irgendwelche Sinusoid wird nur skalieren und verschieben Hier ist es wichtig, dass wir die kreisförmige Version verwenden. Die kreisförmig gefaltete Version wird verschoben und skaliert, während die Version mit normaler Faltung am Anfang verzerrt ist. Lets sehen, was die genaue Skalierung und Verschiebung ist durch die Verwendung einer fft: Sowohl Eingang und Ausgang haben Amplitude nur bei Frequenzen 1 und -1, die so ist, wie es sein sollte, da die Eingabe war eine Sinusoid und das System war linear. Die Ausgangswerte sind um ein Verhältnis von 10.62518 1.3281 größer. Das ist der Gewinn des Systems. Was ist mit der Phase Wir müssen nur sehen, wo die Amplitude ungleich Null ist: Die Eingabe hat eine Phase von pi2, wie wir angefordert haben. Die Ausgangsphase wird um ein zusätzliches 1.0594 (mit entgegengesetztem Vorzeichen für die negative Frequenz) oder etwa 16 eines Zyklus nach rechts verschoben, wie wir auf dem Diagramm sehen können. Nun können wir eine Sinuskurve mit der gleichen Frequenz (1) ausprobieren, aber anstelle von Amplitude 1 und Phase pi2 können wir Amplitude 1.5 und Phase 0 ausprobieren. Wir wissen, dass nur die Frequenz 1 und -1 keine Amplitude von Null haben Bei ihnen: Wieder ist das Amplitudenverhältnis (15.937712.0000) 1.3281 - und für die Phase wird es wieder um 1.0594 verschoben. Wenn diese Beispiele typisch sind, können wir die Wirkung unseres Systems vorhersagen (Impulsantwort .1 .2 .3 .4 .5) bei jedem Sinus mit Frequenz 1 - wird die Amplitude um einen Faktor von 1.3281 erhöht und die (positive Frequenz) Phase wird um 1.0594 verschoben. Wir konnten die Wirkung dieses Systems auf Sinusoiden anderer Frequenzen nach denselben Methoden berechnen. Aber es gibt einen viel einfacheren Weg, und einer, der den allgemeinen Punkt festlegt. Da (kreisförmige) Faltung im Zeitbereich eine Multiplikation im Frequenzbereich bedeutet, folgt daraus, dass mit anderen Worten die DFT der Impulsantwort das Verhältnis der DFT des Ausgangssignals zur DFT des Eingangs ist. In dieser Beziehung sind die DFT-Koeffizienten komplexe Zahlen. Da abs (c1c2) abs (c1) abs (c2) für alle komplexen Zahlen c1, c2 ist, sagt diese Gleichung, dass das Amplitudenspektrum der Impulsantwort immer das Verhältnis des Amplitudenspektrums des Ausganges zu dem des Eingangs ist . Im Fall des Phasenspektrums gilt der Winkel (c1c2) - Winkel (c1) - Winkel (c2) für alle c1, c2 (mit der Maßgabe, dass Phasen, die sich durch n2pi unterscheiden, als gleich angesehen werden). Daher ist das Phasenspektrum der Impulsantwort immer die Differenz zwischen den Phasenspektren des Ausgangssignals und dem Eingang (mit welchen Korrekturen um 2pi erforderlich sind, um das Ergebnis zwischen - pi und pi zu halten). Wir können die Phaseneffekte deutlicher sehen, wenn wir die Darstellung der Phase auspacken, d. h. wenn wir verschiedene Vielfache von 2pi addieren, um die Sprünge zu minimieren, die durch die periodische Natur der angle () - Funktion erzeugt werden. Obwohl die Amplitude und die Phase gewöhnlich für die grafische und sogar tabellarische Darstellung verwendet werden, da sie eine intuitive Möglichkeit sind, über die Auswirkungen eines Systems auf die verschiedenen Frequenzkomponenten ihrer Eingabe nachzudenken, sind die komplexen Fourierkoeffizienten algebraisch nützlicher, da sie es erlauben Der einfache Ausdruck der Beziehung Der allgemeine Ansatz, den wir soeben gesehen haben, wird mit beliebigen Filtern des skizzierten Typs arbeiten, bei dem jede Ausgabeprobe eine gewichtete Summe von einigen Satz von Eingabeproben ist. Wie bereits erwähnt, werden diese oft als Finite Impulse Response Filter bezeichnet, da die Impulsantwort von endlicher Größe oder manchmal Moving Average Filter ist. Wir können die Frequenzgangcharakteristiken eines solchen Filters aus der FFT seiner Impulsantwort bestimmen, und wir können auch neue Filter mit gewünschten Eigenschaften durch IFFT aus einer Spezifikation des Frequenzganges entwerfen. Autoregressive (IIR) Filter Es wäre wenig sinnvoll, Namen für FIR-Filter zu haben, es sei denn, es gab irgendeine andere Art, um sie zu unterscheiden, und so werden diejenigen, die Pragmatik studiert haben, nicht überrascht sein zu erfahren, dass es tatsächlich eine andere Hauptart gibt Des linearen zeitinvarianten Filters. Diese Filter werden manchmal rekursiv genannt, da der Wert der vorherigen Ausgänge (sowie vorherige Eingaben) wichtig ist, obwohl die Algorithmen im allgemeinen mit iterativen Konstrukten geschrieben werden. Sie werden auch Infinite Impulse Response (IIR) Filter genannt, weil im Allgemeinen ihre Reaktion auf einen Impuls für immer weiter geht. Sie werden auch manchmal autoregressive Filter genannt, weil man die Koeffizienten als das Ergebnis der linearen Regression zum Ausdruck bringen kann, um Signalwerte als Funktion früherer Signalwerte auszudrücken. Die Beziehung von FIR - und IIR-Filtern kann deutlich in einer linearen Konstantkoeffizienten-Differenzgleichung gesehen werden, d. h. eine gewichtete Summe von Ausgängen, die gleich einer gewichteten Summe von Eingängen ist, einstellen. Dies ist wie die Gleichung, die wir früher für den kausalen FIR-Filter gegeben haben, außer dass zusätzlich zu der gewichteten Summe der Eingänge auch eine gewichtete Summe der Ausgänge vorliegt. Wenn wir dies als eine Prozedur zur Erzeugung von Ausgangsmustern bedenken wollen, müssen wir die Gleichung neu anordnen, um einen Ausdruck für die aktuelle Ausgabeprobe y (n) zu erhalten. Annahme der Konvention, dass a (1) 1 (zB durch Skalierung anderer als Und bs) können wir den 1a (1) Term beenden: y (n) b (1) x (n) b (2) x (n-1). B (Nb1) x (n-nb) - a (2) y (n-1) -. - a (Na1) y (n-na) Wenn alle a (n) andere als a (1) null sind, reduziert dies auf unseren alten Freund den kausalen FIR-Filter. Dies ist der allgemeine Fall eines (kausalen) LTI-Filters und wird durch den MATLAB-Funktionsfilter implementiert. Betrachten wir den Fall, bei dem die b-Koeffizienten außer b (1) null sind (anstelle des FIR-Falles, wobei a (n) null sind): In diesem Fall wird der aktuelle Ausgangsabtastwert y (n) als a berechnet (N-1), y (n-2) usw. Um eine Vorstellung davon zu bekommen, was mit solchen Filtern passiert, kann man mit dem Fall beginnen, wo: Das heißt, die aktuelle Ausgangsabtastung ist die Summe der aktuellen Eingangsabtastung und der Hälfte der vorherigen Ausgangsabtastung. Nun nehmen Sie einen Eingangsimpuls durch ein paar Zeitschritte, eine zu einer Zeit. Es sollte an dieser Stelle klar sein, dass wir einfach einen Ausdruck für den n-ten Ausgangssamplewert schreiben können: Es ist nur (Wenn MATLAB von 0 gezählt wird, wäre dies einfach .5n). Da das, was wir berechnen, die Impulsantwort des Systems ist, haben wir beispielhaft gezeigt, dass die Impulsantwort tatsächlich unendlich viele Proben ohne Null haben kann. Um diesen trivialen Filter erster Ordnung in MATLAB zu implementieren, könnten wir Filter verwenden. Der Aufruf wird so aussehen: und das Ergebnis ist: Ist das Geschäft wirklich noch linear Wir können das empirisch betrachten: Für einen allgemeineren Ansatz betrachten wir den Wert eines Ausgangsmusters y (n). Durch sukzessive Substitution können wir dies schreiben wie dies ist wie unser alter Freund die Faltungs-Summenform eines FIR-Filters, mit der Impulsantwort, die durch den Ausdruck .5k gegeben wird. Und die Länge der Impulsantwort ist unendlich. So werden die gleichen Argumente, die wir früher gezeigt haben, dass FIR-Filter linear waren, nun hier gelten. So weit kann dies sehr viel Aufsehen über nicht viel sein. Was ist diese ganze Zeile der Untersuchung gut für gut beantworten diese Frage in Stufen, beginnend mit einem Beispiel. Es ist keine große Überraschung, dass wir eine abgetastete exponentielle durch rekursive Multiplikation berechnen können. Lets Blick auf einen rekursiven Filter, der etwas weniger offensichtlich macht. Dieses Mal macht es einen Filter zweiter Ordnung, so dass der Aufruf zum Filtern von der Form sein wird. Setzt den zweiten Ausgangskoeffizienten a2 auf -2cos (2pi40) und den dritten Ausgangskoeffizienten a3 auf 1 und schaut auf den Impuls Antwort. Nicht sehr nützlich als Filter, eigentlich, aber es erzeugt eine abgetastete Sinuswelle (aus einem Impuls) mit drei Multiplikations-Adds pro Probe Um zu verstehen, wie und warum es das tut und wie rekursive Filter entworfen und analysiert werden können Der allgemeinere Fall, müssen wir zurücktreten und einen Blick auf einige andere Eigenschaften von komplexen Zahlen, auf dem Weg zum Verständnis der z transform. Documentation Beschreibung yulewalk entwirft rekursive IIR digitale Filter mit einem kleinsten Quadrate passen zu einem bestimmten Frequenzgang . B, ein yulewalk (n, f, m) gibt Zeilenvektoren, b und a zurück. Die die n1-Koeffizienten des Ordnungs-n-IIR-Filters enthält, deren Frequenz-Größen-Charakteristiken annähernd mit denen übereinstimmen, die in den Vektoren f und m angegeben sind: f ist ein Vektor von Frequenzpunkten, der im Bereich zwischen 0 und 1 angegeben ist, wobei 1 der Hälfte der Abtastfrequenz entspricht (Die Nyquist-Frequenz). Der erste Punkt von f muss 0 sein und der letzte Punkt 1. Alle Zwischenpunkte müssen in aufsteigender Reihenfolge sein. Duplizierte Frequenzpunkte sind erlaubt, entsprechend den Schritten im Frequenzgang. M ist ein Vektor, der die gewünschte Größenreaktion an den in f. F und m muss die gleiche Länge haben. Plot (f, m) zeigt die Filterform an. Die Ausgangsfilterkoeffizienten sind in absteigenden Potenzen von z geordnet. B (z) A (z) b (1) b (2) z x2212 1 x22EF b (n 1) z x2212 na (1) a (2) z x2212 1 x22EF a (n 1) z x2212 n Bei der Angabe der Frequenzgang, vermeiden übermäßig scharfe Übergänge von Passband zu Stoppband. Möglicherweise müssen Sie mit dem Hang des Übergangsbereichs experimentieren, um das beste Filterdesign zu erhalten. Wählen Sie Ihre CountryDocumentation-Ausgabe aus tsmovavg (tsobj, s, lag) gibt den einfachen gleitenden Durchschnitt für das finanzielle Zeitreihenobjekt, tsobj zurück. Verzögerung gibt die Anzahl der bisherigen Datenpunkte an, die mit dem aktuellen Datenpunkt bei der Berechnung des gleitenden Durchschnitts verwendet wurden. Ausgabe tsmovavg (Vektor, s, lag, dim) gibt den einfachen gleitenden Durchschnitt für einen Vektor zurück. Verzögerung gibt die Anzahl der bisherigen Datenpunkte an, die mit dem aktuellen Datenpunkt bei der Berechnung des gleitenden Durchschnitts verwendet wurden. Ausgabe tsmovavg (tsobj, e, timeperiod) gibt den exponentiell gewichteten gleitenden Durchschnitt für das finanzielle Zeitreihenobjekt zurück, tsobj. Der exponentielle gleitende Durchschnitt ist ein gewichteter gleitender Durchschnitt, wobei die Zeitspanne den Zeitraum festlegt. Exponentielle gleitende Durchschnitte reduzieren die Verzögerung, indem sie mehr Gewicht auf die jüngsten Preise anwenden. Zum Beispiel gewinnt ein 10-Perioden-exponentieller gleitender Durchschnitt den jüngsten Preis um 18,18. Exponentieller Prozentsatz 2 (TIMEPER 1) oder 2 (WINDOWSIZE 1). Ausgabe tsmovavg (Vektor, e, timeperiod, dim) gibt den exponentiell gewichteten gleitenden Durchschnitt für einen Vektor zurück. Der exponentielle gleitende Durchschnitt ist ein gewichteter gleitender Durchschnitt, wobei die Zeitspanne den Zeitraum festlegt. Exponentielle gleitende Durchschnitte reduzieren die Verzögerung, indem sie mehr Gewicht auf die jüngsten Preise anwenden. Zum Beispiel gewinnt ein 10-Perioden-exponentieller gleitender Durchschnitt den jüngsten Preis um 18,18. (2 (Zeitperiode 1)). Ausgabe tsmovavg (tsobj, t, numperiod) gibt den dreieckigen gleitenden Durchschnitt für das finanzielle Zeitreihenobjekt zurück, tsobj. Der dreieckige gleitende Durchschnitt verdoppelt die Daten. Tsmovavg berechnet den ersten einfachen gleitenden Durchschnitt mit der Fensterbreite der Decke (numperiod 1) 2. Dann berechnet es einen zweiten einfachen gleitenden Durchschnitt auf dem ersten gleitenden Durchschnitt mit der gleichen Fenstergröße. Ausgabe tsmovavg (Vektor, t, numperiod, dim) liefert den dreieckigen gleitenden Durchschnitt für einen Vektor. Der dreieckige gleitende Durchschnitt verdoppelt die Daten. Tsmovavg berechnet den ersten einfachen gleitenden Durchschnitt mit der Fensterbreite der Decke (numperiod 1) 2. Dann berechnet es einen zweiten einfachen gleitenden Durchschnitt auf dem ersten gleitenden Durchschnitt mit der gleichen Fenstergröße. Ausgabe tsmovavg (tsobj, w, Gewichte) gibt den gewichteten gleitenden Durchschnitt für das finanzielle Zeitreihenobjekt zurück, tsobj. Indem man Gewichte für jedes Element im bewegten Fenster liefert. Die Länge des Gewichtungsvektors bestimmt die Größe des Fensters. Wenn größere Gewichtsfaktoren für neuere Preise und kleinere Faktoren für frühere Preise verwendet werden, reagiert der Trend eher auf die jüngsten Veränderungen. Ausgabe tsmovavg (Vektor, w, Gewichte, Dim) gibt den gewichteten gleitenden Durchschnitt für den Vektor zurück, indem er Gewichte für jedes Element im bewegten Fenster liefert. Die Länge des Gewichtungsvektors bestimmt die Größe des Fensters. Wenn größere Gewichtsfaktoren für neuere Preise und kleinere Faktoren für frühere Preise verwendet werden, reagiert der Trend eher auf die jüngsten Veränderungen. Ausgabe tsmovavg (tsobj, m, numperiod) gibt den geänderten gleitenden Durchschnitt für das finanzielle Zeitreihenobjekt zurück, tsobj. Der geänderte gleitende Durchschnitt ähnelt dem einfachen gleitenden Durchschnitt. Betrachten Sie das Argument numperiod, um die Verzögerung des einfachen gleitenden Durchschnitts zu sein. Der erste modifizierte gleitende Durchschnitt wird wie ein einfacher gleitender Durchschnitt berechnet. Nachfolgende Werte werden berechnet, indem der neue Preis addiert und der letzte Durchschnitt von der resultierenden Summe subtrahiert wird. Ausgabe tsmovavg (vector, m, numperiod, dim) gibt den modifizierten gleitenden Durchschnitt für den Vektor zurück. Der geänderte gleitende Durchschnitt ähnelt dem einfachen gleitenden Durchschnitt. Betrachten Sie das Argument numperiod, um die Verzögerung des einfachen gleitenden Durchschnitts zu sein. Der erste modifizierte gleitende Durchschnitt wird wie ein einfacher gleitender Durchschnitt berechnet. Nachfolgende Werte werden berechnet, indem der neue Preis addiert und der letzte Durchschnitt von der resultierenden Summe subtrahiert wird. Dim 8212 Dimension, um eine positive Ganzzahl mit dem Wert 1 oder 2 zu betreiben, Dimension, um zusammenzuarbeiten, als positive Ganzzahl mit einem Wert von 1 oder 2 angegeben. Dim ist ein optionales Eingabeargument, und wenn es nicht als Eingabe enthalten ist, ist die Voreinstellung Wert 2 wird angenommen. Die Voreinstellung von dim 2 gibt eine zeilenorientierte Matrix an, wobei jede Zeile eine Variable ist und jede Spalte eine Beobachtung ist. Wenn dim 1 ist, wird die Eingabe als Spaltenvektor oder spaltenorientierte Matrix angenommen, wobei jede Spalte eine Variable und jede Zeile eine Beobachtung ist. E 8212 Indikator für den exponentiellen gleitenden durchschnittlichen Zeichenvektor Der exponentielle gleitende Durchschnitt ist ein gewichteter gleitender Durchschnitt, wobei die Zeitspanne die Zeitspanne des exponentiellen gleitenden Durchschnitts ist. Exponentielle gleitende Durchschnitte reduzieren die Verzögerung, indem sie mehr Gewicht auf die jüngsten Preise anwenden. Zum Beispiel, ein 10 Perioden exponentiell gleitenden Durchschnitt gewichtet den jüngsten Preis um 18,18. Exponentieller Prozentsatz 2 (TIMEPER 1) oder 2 (WINDOWSIZE 1) Zeitperiode 8212 Dauer des Zeitraums nonnegative Integer Wählen Sie Ihr Land aus
No comments:
Post a Comment