Wednesday 25 January 2017

Octave Moving Average Funktion

Gewichtete gleitende Durchschnitt In einer Antwort auf diesen Beitrag von Luca Delucchi Eine Online-Methode zu tun, wma (dh, wo Sie können einen einzigen Wert auf einmal) mit einem expinentiellen Fenster (das wiegt mehrere Ereignisse stärker als weniger jüngsten) funktioniert wie folgt: xmean (T1) exp (-1tau) (xmean (t) x (t) tau) Dies gibt Ihnen eine wma von x (t). Tau ist so etwas wie die Länge des Gedächtnisses (Ereignisse, die weiter zurück als tau sind, werden nicht quittrememberedquot zu gut). Am 10.08.2007 um 09.19 schrieb Luca Delucchi: gt Hallo, ich eine Funktion auf gewichteten Moving Average tun können, wenn der Wert im Automatik-Modus gt nehmen sind diese meine Idee gt gt yy1, y2, y3, y4, y5 gt Funktion wma (y) gt (y12y2y3) 4 gt (y22y3y4) 4 gt etc gt etc gt Ende Funktion gt gt ich nicht die Formel (y12y2y3) wiederholen könnte 4 (denn wenn der lange von gt Vektor unterscheidet i muss die Funktion ändern), sondern haben nur eine gt Formel, die die Formel für alle Werte von Vektor gt gt verwende ich Ive hoffe, eine klare Erklärung gt gt Luca gt gt gegeben Hilfe-Oktaven-Mailing-Liste gt versteckte E-Mail gt cae. wisc. edumailmanlistinfohelp-Oktaven-Sein nicht eine Oktave Sache, aber Eine Signalverarbeitungssache. Ein FIR (Finite-Input-Response) - Filter wird durch den Vektor der Koeffizienten bestimmt. Wenn also der Filter die Länge 4 hat, wäre der Ausgang so: y (t) b (1) x (t) b (2) T-1) b (3) x (t-2) b (4) x (t-3) Wenn b eine (1,4) 4 ist, ist es nur der Durchschnitt der letzten vier Elemente. In Oktave können Sie mit der Funktion quotfilterquot genau das tun, wenn x Ihr Signal ist, können Sie einfach y Filter (b, 1, x) P. S. Dies ist fast das gleiche wie Sren39s Vorschlag zur Verwendung von Faltung (mit der conv-Funktion). Der einzige Unterschied (glaube ich) ist, dass Filter die gleiche Ausgabe wie conv geben wird, aber abgeschnitten auf die Länge von x. Auf 81007, Luca Delucchi lthidden E-Mail gt schrieb: 2007810, Schirmacher, Rolf lthidden E-Mail gt: gt Filter mit einem FIR-Filter Koeffizienten wäre gt gt b 1 1 1 1. 4 gt Was ist das Sorry, aber I39m ein Neuling von Oktave gt gt ----- Ursprüngliche Nachricht ----- gt gt Von: Luca Delucchi mailto: versteckte e-Mail gt gt Gesendet: Friday, August 10, 2007 9:20 AM gt gt: Oktave gt gt Betreff: Weighted Moving Average gt gt gt gt gt gt Hallo, ich kann auf gewichteten gleitenden Durchschnitt eine Funktion zu tun, wenn der Wert sind gt gt nehmen im Automatikbetrieb diese meine Idee gt gt gt gt yy1, y2, y3, y4, y5 gt gt Funktion wma (y) gt gt (y12y2y3) 4 gt gt (y22y3y4) 4 gt gt etc gt gt usw. gt gt Ende Funktion gt gt gt gt ich nicht die Formel (y12y2y3) wiederholen könnte 4 (weil wenn die lange von gt gt Vektor verschieden ist, muss ich die Funktion zu ändern), sondern haben nur eine gt gt Formel, die die Formel für alle Werte des Vektors gt gt gt gt verwenden hoffe, dass ich I39ve gegeben eine klare Erklärung gt gt gt gt Luca gt gt gt gt Hilfe-Oktaven-Mailing-Liste gt gt versteckte E-Mail gt gt cae. wisc. edumailmanlistinfohelp Oktaven gt gt gt in Antwort auf dieses Thema von Luca Delucchi Hallo, kann ich eine Funktion auf gewichteten gleitenden Durchschnitt zu tun, wenn der Wert nehmen sind im Automatik-Modus dieser meine Idee yy1, y2, y3, y4, y5 Funktion wma (y) (y12y2y3) 4 (y22y3y4) 4 etc etc Ende Funktion ich nicht die Formel (y12y2y3) wiederholen könnte 4 (denn wenn der lange von Vektor verschieden ist, muss ich ändern Die Funktion) haben aber nur eine Formel, die die Formel für alle Werte des Vektors verwendet. Sie müssen an Ihre Daten anders denken, wenn Sie die Matlaboctave effizient nutzen wollen. Die Daten werden als Vektoren oder Matrizen dargestellt, und Sie sollten alle Operationen auf den gesamten Daten durchführen - denken Sie nicht an Elemente y1, y2 usw., sondern behandeln Sie den gesamten Vektor y. Sie müssen Vektorelemente aus verschiedenen Positionen mischen, also müssen Sie verschobene Versionen des Vektors konstruieren. Zum Beispiel ist y (2: Ende) der Vektor, dessen erstes Element das zweite Element von y ist. Wenn du es auf diese Weise tust, zwingt es dich, verschiedene Probleme zu erkennen, die unter den Teppich gekehrt werden, sonst zum Beispiel, was ist die Bedeutung deines gewichteten Mittelwertes für y1, der nicht über einen früheren Datenpunkt verfügt. Ein Ansatz könnte sein, das zu duplizieren Erster und letzter Punkt: temp y (1) yy (Ende) Durchschnitt (temp (1: end-2) 2temp (2: end-1) temp (3: end)) 4 oder geben Sie auf und geben Sie zu, dass Sie nur berechnen können (2: end-1) y (3: end)) 4 Es gibt eine Oktave-Funktion mit dem Namen filter (), die beliebigen linearen Filter sein kann Ziemlich kompliziert, weil es ermöglicht eine lineare Rückmeldung, die Sie arent interessiert, so dass Sie eine bestimmte Form eines Feedback-Vektor b1 0 0 0 0 0. durchschnittliche Filter (1 2 14,1, y)) Schließlich hat Octave einige Filter in meinem gebaut (1, 10), 1, x) Dies setzt voraus, daß die Werte bei negativer Zeit (x (0), x (-1), usw.) gleich sind Alle null. So wäre zum Beispiel der erste Wert von y x (1) 10. Ich schaute auf beide conv () und Filter (), aber can39t herauszufinden, wie man einen gleitenden Durchschnitt mit ihnen zu tun. Vielleicht I39m nicht verstehen, die Funktionen der Eingabevars richtig. Let39s sagen, ich habe ein Array, ein rand (1.100). Können Sie mir sagen, wie I39d verwenden conv () und Filter () zu nehmen, sagen die 10-Tage gleitenden Durchschnitt, mit einer Gewichtung von 0,5 gt ----- Ursprüngliche Nachricht ----- gt Von: Andy Buckle Mailto: hidden email gt Gesendet am: Donnerstag, den 06. Mai 2010 um 12:06 Uhr gt an: versteckte E-Mail gt Cc: versteckte E-Mail gt Thema: Re: vectorized gleitende gt gt Conv ist auch eine m-Datei, aber es hat nur ein paar Ifs in. Dann es gt ruft Filter, um den Job zu erledigen. Die eine oct-Datei ist. Gt gt Andy gt gt Am Thu, 6. Mai 2010 um 06.28 Uhr, Tim Rueth lthidden E-Mail gt schrieb: gt gt Wer weiß, wie man einen n-Tag gewichteten gleitenden Durchschnitt eines gt gt Vektor ohne Verwendung einer for - Loop Ich schaute auf die M-Code gt für movavg () gt gt und es verwendet eine for-Schleife, so I39m Vermutung dort wahrscheinlich isn39t ein Weg, gt gt aber ich dachte, I39d überprüfen. Vielen Dank. gt gt gt gt --Tim gt gt gt gt Hilfe-Oktaven-Mailing-Liste gt gt versteckte E-Mail gt gt www-old. cae. wisc. edumailmanlistinfohelp Oktaven gt gt gt gt gt gt gt gt - gt andy gt Dank Schnalle für das Zeigen Wie man filter () verwenden, um einen einfachen gleitenden Durchschnitt zu machen. Ich implementierte Ihren Code, und es stimmt mit movavg (x, 10,10,0), die einen 10-tägigen einfachen gleitenden Durchschnitt berechnet. Es gibt nur einen Unterschied in den ersten 9 Zahlen aufgrund der angenommenen Werte der negativen Zeit (movavg berechnet eine Einlaufperiode). Wie Sie vielleicht daran erinnern, Im versucht, Filter () verwenden, um movavg () s for-Schleife zu vermeiden. Nun, was ich versuche zu tun ist ein gewichteter gleitender Durchschnitt, identisch mit dem Alpha-Parameter von movavg (). Wenn alpha0, es ist ein einfacher gleitender Durchschnitt, und stimmt mit filter () überein. Wenn ich Alpha zu 1 ändere, Im annehmen, um eine lineare MA zu erhalten. Heres den Code in movavg. m, dass die Gewichtung (Blei ist die Anzahl der Tage zu durchschnittlich, gleich 10 im obigen Fall): Blei (1: Blei).Alpha Anpassung der Gewichte zu 1 Bleifreiespitze (Blei) So, für einen 10-Tage linear gewichteten gleitenden Durchschnitt (Blei 10, Alpha 1). Sollten die letzten 9 Tage und der aktuelle Tag wie folgt gewichtet werden: 155, 255, 355. 1055, wobei das größte Gewicht (1055) auf den aktuellen Tag angewendet wird. Also, ich versuchte eine einfache Testfall mit nur ein 2-Tage-MA auf einem 6-Element-Vektor. madays 2 alpha 1 len 6 a rand (1. len) berechnen MA mit movavg () ma movavg (a, madays, madays, alpha) berechnen MA mit filter () Sweep (1: madays) alpha normsweep sweepsum (Sweep) f Filter (normsweep, 1, a) Die Ergebnisse von movavg () und filter () sind ähnlich, aber nicht gleich. Ich vermute, ich habe nicht die Argumente für Filter () richtig, aber ich kann nicht herausfinden, was ich falsch gemacht habe. Insbesondere bin ich nicht sicher, was das zweite Argument von Filter () soll. Hilfe Im nicht sicher, was Sie mit der Gewichtung von 0,5 bedeuten, aber um eine einfache 10-Tage-Durchschnitt zu tun, itd y-Filter (110ones (1, 10), 1, x) Dies setzt voraus, dass die Werte bei negativen Zeit (x (0 ), X (-1), usw.) alle Null sind. So wäre zum Beispiel der erste Wert von y x (1) 10. Hallo ihr Lieben, ich glaube nicht, dass es sich hierbei um ein Problem handelt. Vielleicht Im nicht verstehen, die Funktionen der Eingabevars richtig. Lets sagen, ich habe ein Array, ein rand (1.100). Können Sie mir sagen, wie Id verwenden conv () und Filter () zu nehmen, sagen die 10-Tage gleitenden Durchschnitt, mit einer Gewichtung von 0,5 gt ----- Ursprüngliche Nachricht ----- gt Von: Andy Buckle Mailto: hidden email gt Gesendet am: Donnerstag, den 06. Mai 2010 um 12:06 Uhr gt an: versteckte E-Mail gt Cc: versteckte E-Mail gt Thema: Re: vectorized gleitende gt gt Conv ist auch eine m-Datei, aber es hat nur ein paar Ifs in. Dann es gt ruft Filter, um den Job zu erledigen. Die eine oct-Datei ist. Gt gt Andy gt gt Am Thu, 6. Mai 2010 um 06.28 Uhr, Tim Rueth lthidden E-Mail gt schrieb: gt gt Wer weiß, wie man einen n-Tag gewichteten gleitenden Durchschnitt eines gt gt Vektor ohne Verwendung einer for - Loop Ich schaute auf die M-Code gt für movavg () gt gt und es nutzt eine for-Schleife, so Im vermutlich gibt es wahrscheinlich nicht eine Möglichkeit, gt gt aber ich dachte, Id-Check. Vielen Dank. gt gt gt gt --Tim gt gt gt gt Hilfe-Oktaven-Mailing-Liste gt gt versteckte E-Mail gt gt www-old. cae. wisc. edumailmanlistinfohelp Oktaven gt gt gt gt gt gt gt gt - gt andy gt gtYour Filtercode Schnalle Unten funktioniert im Vergleich zu dem, was ich hatte gtdoing, außer für eine Reihe von ersten Tagen, aufgrund dessen, welche Werte gtin negative Zeit angenommen werden. Ich hatte den folgenden Code verwendet: gt gt quotndaysquot ist die Anzahl der Tage, die beim Berechnen des exponentiellen gtmoving-Mittels von quotdataquot (Daten ist ein Spaltenvektor) gt data repmat (Daten (1), ndays, 1) Datenwiederholungsdaten zu verwenden sind (1) gt avg (1) Daten (1) Die obige Anweisung ist alles, was Sie benötigen Auf negative Werte zurücksetzen. Sie sollten das gleiche für die Filter-Funktion tun, aber ich konnte nicht sagen, wie es zu tun, offhand. Gt für i 2. n gt ao avg (i-1) gt avg (i) ao alpha (Daten (i) - ao) gt end für gt gt trim off Einlaufzeit für negative Zeitwerte gt longma longma (lmadays1 ) Ich verstehe nicht die oben genannten Anweisung. Was ist longma gtFor kleine Werte von ndays, die Anzahl der ersten Tage, wo theres eine gtdiscrepancy mit Ihrer Filter () - Implementierung ist minimal, aber für größere gtvalues ​​von ndays wächst die Anzahl der ersten Tage der Diskrepanz (offensichtlich, gtdue auf die Natur der Ein exponentielles MA mit einem Long-Tail-Speicher). Beachten Sie, dass ich gtadd ähnliche negative Zeitwerte auf die Vorderseite des Vektors bei der Verwendung von gtfilter () auch. Im nur nicht sicher, was ist die Konvention, wenn es darum geht, gtcalculating exponentielle gleitende Mittelwerte für Punkte in quotdataquot wo quotndaysquot gtreaches zurück in negative Zeit. Danke noch einmal. - Francesco Potort (ricercatore) Voice: 39 050 315 3058 (op.2111) ISTI - Gebiet della ricerca CNR Fax: 39 050 315 2040 via G. Moruzzi 1, I-56124 Pisa E-Mail: versteckt E-Mail (Eingang 20, 1. Stock , Raum C71) Web: fly. isti. cnr. it Help-octave Mailing-Liste versteckte E-Mail www-old. cae. wisc. edumailmanlistinfohelp-Oktave Ich kann es derzeit prüfen, aber wenn ich mich richtig erinnere, ist das 4. Argument zu filtern initial Bedingungen. Ich denke, der Befehl wäre: b alpha a 1, Alpha-1 s-Filter (b, a, x, x (1)) Es braucht nur Ein Element in diesem Fall sein, weil die einzige Anfangsbedingung, die Sie benötigen, s0 ist. Am Thu, 13. Mai 2010 um 02.21 Uhr, Francesco Potort lthidden E-Mail gt schrieb: gtYour Filtercode unten funktioniert gut, wenn im Vergleich zu dem, was ich hatte gtdoing, außer für eine Reihe von ersten Tagen, aufgrund der Werte angenommen werden Gtin negative Zeit. Ich hatte den folgenden Code verwendet: gt gt quotndaysquot ist die Anzahl der Tage, die beim Berechnen des exponentiellen gtmoving-Mittels von quotdataquot (Daten ist ein Spaltenvektor) gt data repmat (Daten (1), ndays, 1) Datenwiederholungsdaten zu verwenden sind (1) gt avg (1) Daten (1) Die obige Anweisung ist alles, was Sie benötigen Auf negative Werte zurücksetzen. Sie sollten das gleiche für die Filter-Funktion tun, aber ich konnte nicht sagen, wie es zu tun, offhand. Gt für i 2. n gt ao avg (i-1) gt avg (i) ao alpha (Daten (i) - ao) gt end für gt gt trim off Einlaufzeit für negative Zeitwerte gt longma longma (lmadays1 ) Ich verstehe die obige Anweisung nicht. Was Longma gtFor kleine Werte von nTage ist, wobei die Anzahl der ersten Tagen there39s eine gtdiscrepancy mit filter () Implementierung ist minimal, aber für größere gtvalues ​​von nTage, wächst die Zahl der Anfangstage der Diskrepanz (natürlich gtdue der Art Ein exponentielles MA mit einem Long-Tail-Speicher). Beachten Sie, dass ich gtadd ähnliche negative Zeitwerte auf die Vorderseite des Vektors bei der Verwendung von gtfilter () auch. I39m nur nicht sicher, was ist die Konvention, wenn es darum geht, gtcalculating exponentielle gleitende Mittelwerte für Punkte in quotdataquot wo quotndaysquot gtreaches zurück in negative Zeit. Danke noch einmal. - Francesco Potort (ricercatore) Voice: 39 050 315 3058 (op.2111) ISTI - Gebiet della ricerca CNR Fax: 39 050 315 2040 via G. Moruzzi 1, I-56124 Pisa E-Mail: versteckt E-Mail (Eingang 20, 1. Stock , Raum C71) Web: fly. isti. cnr. it Als Antwort auf diesen Beitrag von Francesco Potort Der letzte Befehl mit quotlongmaquot sollte gelesen haben: quotavg avg (n1. Ende) quot, die effektiv trimmt die berechneten Werte aus negativer Zeit. Aber, wie Sie sagen, es sieht aus wie ich didnt Notwendigkeit, dies zu tun, weil die Geschichte vollständig erfasst ist in avg (1) Daten (1), so dass keine Notwendigkeit, eine quotrun-inquot Zeit zu berechnen. Vielen Dank Francesco. Sherman hatte herausgefunden, dass ich die Anfangsbedingung festlegen kann, indem ich einen 4. Parameter in filter () angegeben habe, der gleich dem ersten Datenpunkt ist. Ich habe versucht, und bekam sehr ähnlich (aber nicht ganz exakt) Ergebnisse im Vergleich zu der for-Schleife unten ohne negative Zeitwerte. Aber diese kleine Differenz dissipated innerhalb quotndaysquot und isnt eine große Sache. Vielen Dank Sherman. Um den exponentiellen gleitenden Durchschnitt von quotdataquot für quotndaysquot zu berechnen, gilt der folgende Code: alpha 2 (ndays1) n Länge (Daten) avg Nullen (n, 1) avg (1) Daten (1) für i 2. n ao avg (Alpha, 1 alpha-1, Daten, Daten (1) avg (i) ao alpha (Daten (i) - ao) endfor ist nahe, aber nicht ganz gleich: ) Für ungefähr die ersten Tage von avg. Gt ----- Ursprüngliche Nachricht ----- gt Von: Francesco Potort mailto: verborgene e-mail gt Gesendet: Wednesday, May 12, 2010 11:22 PM gt An: hidden email gt Cc: Octave-ML James Sherman Jr. Gt gtYour-Filtercode unten funktioniert gut, wenn im Vergleich zu dem, was gt ich gt gtdoing, mit Ausnahme einer Reihe von ersten Tagen, aufgrund der Werte gt gtassumed in negativer Zeit. Ich hatte den folgenden Code verwendet: gt gt gt gt quotndaysquot ist die Anzahl der Tage, die bei der Berechnung des gt gtexponentialen gleitenden Mittelwertes von quotdataquot (Daten ist ein Spaltenvektor) gt gt data repmat (data (1), ndays, 1 verwendet werden soll ) Daten wiederholen gt Daten (1) ndays mal bei gt gtthe Anfang der Daten für negative Zeitwerte alpha gt 2 (ndays1) n gt gt Länge (Daten) avg Nullen (n, 1) gt gt avg (1) Daten (1) Gt gt Die obige Anweisung ist alles, was Sie brauchen, um quotinventquot Vergangenheit Speicher gt für negative Werte. Sie sollten das gleiche für die Filter-gt-Funktion zu tun, aber ich konnte nicht sagen, wie es zu tun offhand. Gt gt für i 2 n gt gt ao avg (i-1) gt gt avg (i) ao alpha (Daten (i) - ao) end für gt gt gt gt die Einlaufzeit für negative Zeitwerte gt gt abzuschneiden Ich verstehe nicht die oben genannten Anweisung. Was ist longma gt gt gt Für kleine Werte von ndays, die Anzahl der ersten Tage, wo gt theres eine gt gtdiscrepancy mit Ihrer Filter () Implementierung ist minimal, aber für gt gtlarger Werte von ndays wächst die Anzahl der ersten Tage der gt Diskrepanz gt gt (Offensichtlich aufgrund der Natur eines exponentiellen MA mit einem gt-long-tail-gt-Speicher). Anmerkung, füge ich ähnliche negative Zeitwerte zur gt Vorderseite des gt gtvector bei Verwendung von gt gtfilter () hinzu. Im nur nicht sicher, was ist die Konvention, wenn es gtcomes zu berechnen exponentielle gleitende Mittelwerte für Punkte gt in quotdataquot wo quotndaysquot gt gtreaches zurück in negative Zeit. Danke noch einmal. Gt gt - gt Francesco Potort (ricercatore) Stimme: 39 050 315 gt 3058 (op.2111) gt ISTI - Gebietsbezirke CNR Fax: 39 050 315 2040 gt über G. Moruzzi 1, I-56124 Pisa Email: Versteckte E-Mail-Adresse Gt (Eingang 20, 1. Etage, Raum C71) Web: fly. isti. cnr. it gt So, das hat mich gequält, also sah ich ein wenig an der Filterfunktion, und ich glaube, ich fand, wo der Fehler war in meinem ersten Vorschlag . Der Anfangsbedingungsvektor hat mit den internen Zuständen des Filters zu tun, nicht die negativen Zeitausgänge des Filters (zumindest nicht direkt), um so zu bekommen, was ich denke, genau das ist, was dein Code mit der for-Schleife die Filterzeile sein sollte : Avg filter (alpha, 1 alpha-1, data, data (1) (1-alpha)) Es ist ziemlich unintuitive, warum der 1-Alpha-Begriff dort sein muss, und ich weiß nicht, ob es viel Interesse daran gibt Es sollte nicht so schwer sein (wahrscheinlich brauche ich nur, um meine Signale und Systeme Buch zu knacken), um eine Funktion schreiben, um die jene Anfangsbedingungen zu berechnen, dass die Filter-Funktion nur die Ausgänge und Eingaben von negativen Zeit zu erwarten. Die letzte Anweisung mit quotlongmaquot sollte gelesen haben: quotavg avg (n1: end) quot, die effektiv trimmt die berechneten Werte aus negativer Zeit. Aber, wie Sie sagen, es sieht aus wie ich didn39t Notwendigkeit, dies zu tun, weil die Geschichte vollständig erfasst wird in avg (1) Daten (1), so dass keine Notwendigkeit, eine quotrun-inquot Zeit zu berechnen. Vielen Dank Francesco. Sherman hatte herausgefunden, dass ich die Anfangsbedingung festlegen kann, indem ich einen 4. Parameter in filter () angegeben habe, der gleich dem ersten Datenpunkt ist. Ich habe versucht, und bekam sehr ähnlich (aber nicht ganz exakt) Ergebnisse im Vergleich zu der for-Schleife unten ohne negative Zeitwerte. Aber dieser kleine Unterschied verschwand innerhalb quotndaysquot und isn39t eine große Sache. Vielen Dank Sherman. Um den exponentiellen gleitenden Durchschnitt von quotdataquot für quotndaysquot zu berechnen, gilt der folgende Code: alpha 2 (ndays1) n Länge (Daten) avg Nullen (n, 1) avg (1) Daten (1) für i 2. n ao avg (I-1) avg (i) ao alpha (Daten (i) - ao) ist nah, aber nicht ganz gleich: alpha 2 (ndays1) avg Filter (alpha, 1 alpha-1, Daten, Daten (1)) Für ungefähr die ersten Tage von avg. Gt ----- Ursprüngliche Nachricht ----- gt Von: Francesco Potort mailto: verborgene e-mail gt Gesendet: Wednesday, May 12, 2010 11:22 PM gt An: hidden email gt Cc: 39Octave-ML39 39James Sherman Jr. 39 gt Thema: Re: Vektorisierten gleitenden Durchschnitt gt gt gtYour Filtercode unten funktioniert nur gut, wenn im Vergleich zu dem, was gt gt gtdoing, mit Ausnahme einer Reihe von ersten Tagen, aufgrund der Werte gt gtassumed in negativer Zeit. Ich hatte den folgenden Code verwendet: gt gt gt gt quotndaysquot ist die Anzahl der Tage, die bei der Berechnung des gt gtexponentialen gleitenden Mittelwertes von quotdataquot (Daten ist ein Spaltenvektor) gt gt data repmat (data (1), ndays, 1 verwendet werden soll ) Daten wiederholen gt Daten (1) ndays mal bei gt gtthe Anfang der Daten für negative Zeitwerte alpha gt 2 (ndays1) n gt gt Länge (Daten) avg Nullen (n, 1) gt gt avg (1) Daten (1) Gt gt Die obige Anweisung ist alles, was Sie brauchen, um quotinventquot Vergangenheit Speicher gt für negative Werte. Sie sollten das gleiche für die Filter-gt-Funktion zu tun, aber ich konnte nicht sagen, wie es zu tun offhand. Gt gt für i 2 n gt gt ao avg (i-1) gt gt avg (i) ao alpha (Daten (i) - ao) end für gt gt gt gt die Einlaufzeit für negative Zeitwerte gt gt abzuschneiden Longma longma (lmadays1. Ende) gt gt Ich don39t verstehen die obige Anweisung. Was ist longma gt gt gt Für kleine Werte von ndays ist die Anzahl der anfänglichen Tage, an denen gt eine gt gtdiscrepancy mit Ihrer filter () Implementierung minimal ist, aber für gt gtlarger Werte von ndays wächst die Anzahl der anfänglichen Tage der gt Diskrepanz gt gt (Offensichtlich aufgrund der Natur eines exponentiellen MA mit einem gt-long-tail-gt-Speicher). Anmerkung, füge ich ähnliche negative Zeitwerte zur gt Vorderseite des gt gtvector bei Verwendung von gt gtfilter () hinzu. I39m nur nicht sicher, was ist die Konvention, wenn es gtcomes zur Berechnung der exponentiellen gleitenden Mittelwerte für Punkte gt in quotdataquot wo quotndaysquot gt gtreaches zurück in negative Zeit. Danke noch einmal. Gt gt - gt Francesco Potort (ricercatore) Stimme: 39 050 315 gt 3058 (op.2111) gt ISTI - Gebietsbezirke CNR Fax: 39 050 315 2040 gt über G. Moruzzi 1, I-56124 Pisa Email: Versteckte E-Mail-Adresse Gt (Eingang 20, 1. Etage, Raum C71) Web: fly. isti. cnr. it gt So, das hat mich gequält, also sah ich ein wenig an der Filterfunktion, und ich glaube, ich fand, wo der Fehler war in meinem ersten Vorschlag . Der Anfangsbedingungsvektor hat mit den internen Zuständen des Filters zu tun, nicht die negativen Zeitausgänge des Filters (zumindest nicht direkt), um so zu bekommen, was ich denke, genau das ist, was dein Code mit der for-Schleife die Filterzeile sein sollte : Avg Filter (Alpha, 1 Alpha-1, Daten, Daten (1) (1-alpha)) Es ist ziemlich unintuitive, warum die 1-alpha Begriff muss dort sein, und ich weiß nicht, ob theres viel Interesse daran, aber Es sollte nicht so schwer sein (wahrscheinlich brauche ich nur, um meine Signale und Systeme Buch zu knacken), um eine Funktion schreiben, um die jene Anfangsbedingungen zu berechnen, dass die Filter-Funktion nur die Ausgänge und Eingaben von negativen Zeit erwartet. Die letzte Anweisung mit longma sollte gelesen haben: avg avg (n1: Ende), die effektiv trimmt die berechneten Werte aus negativer Zeit. Aber, wie Sie sagen, es sieht aus wie ich didnt Notwendigkeit, dies zu tun, weil die Geschichte vollständig erfasst wird in avg (1) Daten (1), so dass keine Notwendigkeit, eine Einlaufzeit zu berechnen. Vielen Dank Francesco. Sherman hatte herausgefunden, dass ich die Anfangsbedingung festlegen kann, indem ich einen 4. Parameter in filter () angegeben habe, der gleich dem ersten Datenpunkt ist. Ich habe versucht, und bekam sehr ähnlich (aber nicht ganz exakt) Ergebnisse im Vergleich zu der for-Schleife unten ohne negative Zeitwerte. Aber diese kleine Differenz dissipated innerhalb von ndays und isnt eine große Sache. Vielen Dank Sherman. Um den exponentiellen gleitenden Durchschnitt der Daten für ndays zu berechnen, gilt der folgende Code: alpha 2 (ndays1) n Länge (Daten) avg Nullen (n, 1) avg (1) Daten (1) für i 2. n ao avg (I-1) avg (i) ao alpha (Daten (i) - ao) ist nah, aber nicht ganz gleich: alpha 2 (ndays1) avg Filter (alpha, 1 alpha-1, Daten, Daten (1)) Für ungefähr die ersten Tage von avg.


No comments:

Post a Comment