Tuesday 14 March 2017

Bewegungs Durchschnitt Matlab Conv

29 September, 2013 Gleitender Durchschnitt durch Faltung Was ist gleitender Durchschnitt und was ist es gut für Wie ist das Bewegen der Mittelung durch die Faltung gemacht Bewegen Durchschnitt ist eine einfache Operation verwendet in der Regel zu unterdrücken Rauschen eines Signals: Wir setzen den Wert jedes Punktes auf die Durchschnitt der Werte in seiner Nachbarschaft. Nach einer Formel: Hier ist x die Eingabe und y ist das Ausgangssignal, während die Größe des Fensters w ist, soll ungerade sein. Die obige Formel beschreibt eine symmetrische Operation: Die Proben werden von beiden Seiten des tatsächlichen Punktes genommen. Unten ist ein echtes Leben Beispiel. Der Punkt, an dem das Fenster gelegt wird, ist rot. Werte außerhalb von x sollen Nullen sein: Um herumzuspielen und die Effekte des gleitenden Durchschnitts zu sehen, werfen Sie einen Blick auf diese interaktive Demonstration. Wie man es durch Faltung macht Wie Sie vielleicht erkannt haben, ist die Berechnung des einfachen gleitenden Durchschnitts ähnlich der Faltung: In beiden Fällen wird ein Fenster entlang des Signals verschoben und die Elemente im Fenster werden zusammengefasst. Also, versuch es, das Gleiche zu tun, indem du eine Faltung benutzt. Verwenden Sie die folgenden Parameter: Die gewünschte Ausgabe ist: Als erster Ansatz, versuchen wir, was wir bekommen, indem wir das x-Signal durch den folgenden k-Kernel falten: Der Ausgang ist genau dreimal größer als der erwartete. Es kann auch gesehen werden, dass die Ausgangswerte die Zusammenfassung der drei Elemente im Fenster sind. Es ist, weil während der Faltung das Fenster verschoben wird, werden alle Elemente in ihm mit einem multipliziert und dann zusammengefasst: yk 1 cdot x 1 cdot x 1 cdot x Um die gewünschten Werte von y zu erhalten. Die Ausgabe wird durch 3 geteilt: Nach einer Formel, die die Teilung einschließt: Aber wäre es nicht optimal, die Teilung während der Faltung zu machen. Hier kommt die Idee, indem sie die Gleichung neu arrangiert: So werden wir den folgenden k Kernel verwenden: Auf diese Weise werden wir Bekomme die gewünschte Ausgabe: Im Allgemeinen: Wenn wir gleitenden Durchschnitt durch Faltung mit einer Fenstergröße von w machen wollen. Wir verwenden den folgenden k Kernel: Eine einfache Funktion, die den gleitenden Durchschnitt macht: Ein Beispiel ist: Ich muss einen gleitenden Durchschnitt über eine Datenreihe innerhalb einer for-Schleife berechnen. Ich muss den gleitenden Durchschnitt über N9 Tage bekommen. Das Array Im Computing in ist 4 Serien von 365 Werten (M), die selbst Mittelwerte eines anderen Satzes von Daten sind. Ich möchte die Mittelwerte meiner Daten mit dem gleitenden Durchschnitt in einer Handlung darstellen. Ich googelte ein bisschen über bewegte Durchschnitte und den Conv-Befehl und fand etwas, was ich versucht habe, in meinem Code zu implementieren: Also grundsätzlich berechne ich meinen Mittel und plot es mit einem (falschen) gleitenden Durchschnitt. Ich habe den WTS-Wert direkt von der Mathworks-Website ausgewählt, also ist das falsch. (Quelle: mathworks. nlhelpeconmoving-average-trend-estimation. html) Mein Problem aber ist, dass ich nicht verstehe, was diese wts ist. Könnte jemand erklären, wenn es etwas mit den Gewichten der Werte zu tun hat: das ist in diesem Fall ungültig. Alle Werte werden gleich gewichtet. Und wenn ich das ganz falsch mache, könnte ich mir etwas helfen. Mein herzlichster Dank. Fragte am 23.09 um 19:05 Mit conv ist eine hervorragende Möglichkeit, einen gleitenden Durchschnitt zu implementieren. In dem Code, den Sie verwenden, ist wts, wie viel Sie jeden Wert wiegen (wie Sie erraten). Die Summe dieses Vektors sollte immer gleich eins sein. Wenn du deinen Wert gleichmäßig erwärmen möchtest und eine Größe N bewegter Filter machst, dann würdest du es tun wollen Mit dem gültigen Argument in conv wird es darum gekommen, weniger Werte in Ms zu haben, als du in M ​​hast. Benutze das gleiche, wenn du die Auswirkungen von nicht beachtet hast Nullpolsterung. Wenn Sie die Signalverarbeitung Toolbox können Sie cconv verwenden, wenn Sie einen kreisförmigen gleitenden Durchschnitt versuchen wollen. Etwas wie Sie sollten die conv und cconv Dokumentation für weitere Informationen lesen, wenn Sie havent bereits haben. Sie können Filter verwenden, um einen laufenden Durchschnitt zu finden, ohne eine for-Schleife zu verwenden. Dieses Beispiel findet den laufenden Durchschnitt eines 16-Element-Vektors unter Verwendung einer Fenstergröße von 5. 2) glatt als Teil der Curve Fitting Toolbox (die in den meisten Fällen verfügbar ist) yy glatt (y) glättet die Daten im Spaltenvektor Y mit einem gleitenden durchschnittlichen Filter. Die Ergebnisse werden im Spaltenvektor yy zurückgegeben. Die Standardspanne für den gleitenden Durchschnitt ist 5.Verwendender MATLAB, wie kann ich den 3-tägigen gleitenden Durchschnitt einer bestimmten Spalte einer Matrix finden und den gleitenden Durchschnitt an diese Matrix anhängen, ich versuche, den 3-tägigen gleitenden Durchschnitt zu berechnen Unten zur Oberseite der Matrix. Ich habe meinen Code bereitgestellt: Angesichts der folgenden Matrix a und Maske: Ich habe versucht, den Conv-Befehl zu implementieren, aber ich bekomme einen Fehler. Hier ist der Conv-Befehl, den ich in der 2. Spalte der Matrix a verwendet habe: Die Ausgabe, die ich wünsche, ist in der folgenden Matrix gegeben: Wenn Sie irgendwelche Vorschläge haben, würde ich es sehr schätzen. Vielen Dank Für Spalte 2 von Matrix a, berechne ich den 3-tägigen gleitenden Durchschnitt wie folgt und platziere das Ergebnis in Spalte 4 der Matrix a (ich benannte Matrix a als 39desiredOutput39 nur zur Illustration). Der 3-Tages-Durchschnitt von 17, 14, 11 ist 14 der 3-Tages-Durchschnitt von 14, 11, 8 ist 11 der 3-Tages-Durchschnitt von 11, 8, 5 ist 8 und der 3-Tage-Durchschnitt von 8, 5, 2 ist 5. Es gibt keinen Wert in den unteren 2 Zeilen für die 4. Spalte, da die Berechnung für den 3-tägigen gleitenden Durchschnitt am Anfang beginnt. Die 39valid39 Ausgabe wird nicht angezeigt, bis mindestens 17, 14 und 11. Hoffentlich ist das sinnlich ndash Aaron Jun 12 13 um 1:28 Im Allgemeinen würde es helfen, wenn du den Fehler zeigen würdest. In diesem Fall machst du zwei Dinge falsch: Zuerst muss deine Faltung durch drei geteilt werden (oder die Länge des gleitenden Durchschnitts) Zweitens bemerke die Größe von c. Du kannst nicht einfach in einen. Die typische Art, einen gleitenden Durchschnitt zu bekommen, wäre, dasselbe zu verwenden: aber das sieht nicht so aus, was du willst. Stattdessen sind Sie gezwungen, ein paar Zeilen zu benutzen: Moving Average Hi Miquel mit dem Steuerparameter, alpha, auf Null gesetzt. Ihre bewegten Durchschnitte werden berechnet, indem Sie Ihr Eingangssignal (Serie) mit zwei endlichen Impulsantwortfiltern der Länge N mit Filterkoeffizienten 1N falten. So wird der Anruf: movavg (Serie, 3,10,0) die Daten in Serie mit zwei Filtern filtern, eine wird von Länge 3 sein und Filterkoeffizienten haben filt113 13 13 3 Koeffizienten Die andere hat die Länge 10 und hat Filterkoeffizienten filt2110 110 110 110 110 110 110 110 110 110 10 Koeffizienten Sie filtern dann Ihre Eingangsdaten mit diesen FIR-Filtern. (Randloses Datenausgangssignalfilt2filter (filt1,1, Serie) Wenn Sie nun diese Daten zeichnen, sehen Sie, dass beide gefilterten Versionen glatter sind als die Eingabedaten , Aber das outputfilt2 ist glatter als outputfilt1, weil man einen längeren gleitenden durchschnittlichen filter benutzt hat. Ich glaube nicht, dass du deine Lead-Input-Variable willst, um 1 zu sein, denn das gibt dir nichts. Im nicht eine ökonomische Person, aber eine Anwendung der Verwendung dieser gleitenden Mittelwerte von verschiedenen Längen ist, die tatsächlichen Daten mit den gleitenden Durchschnitten unterschiedlicher Länge zu vergleichen (eine kurze oder führende und eine längere oder nacheilende) und sehen, wo die tatsächlichen Marktdaten fallen In Bezug auf die verschiedenen gleitenden Durchschnitte. Dies wird verwendet, um Schlussfolgerungen über die allgemeine Richtung der Zeitreihen (Markt) zu machen. Durch Ändern des Steuerungsparameters ergeben sich gewichtete Bewegungsdurchschnitte oder exponentiell. Hoffe, das hilft, Wayne Miguel Moura ltmdNOSPAMmouragmREMOVEailgt schrieb in Nachricht ltguahs5lgk1fred. mathworksgt. Hallo, gt gt Ich muss einen Simple Moving Average mit Periode 10 berechnen. Gt Wie kann ich das tun in Matlab gt gt Ich benutze movavg (Serie, 1,20,0) aber ich bin mir nicht sicher, ob das richtig ist. Gt gt Was soll ich für Blei verwenden und lag gt gt Danke, gt Miguel Wayne König ltwmkingtygmailgt schrieb in Nachricht ltgubl6qp821fred. mathworksgt. Gt Hi Miquel mit dem Steuerparameter, alpha, auf Null gesetzt. Ihre bewegten Durchschnitte werden berechnet, indem Sie Ihr Eingangssignal (Serie) mit zwei endlichen Impulsantwortfiltern der Länge N mit Filterkoeffizienten 1N falten. Also der Aufruf: gt movavg (Serie, 3,10,0) gt wird die Daten in Serie mit zwei Filtern filtern, man wird von Länge 3 und haben Filterkoeffizienten gt gt filt113 13 13 3 Koeffizienten gt Die andere hat die Länge 10 Und haben Filterkoeffizienten gt filt2110 110 110 110 110 110 110 110 110 110 10 Koeffizienten gt gt Sie filtern dann Ihre Eingabedaten mit diesen FIR-Filtern. Gt gt seriesrandn (100,1) erstellen zufällige Daten gt outputfilt1filter (filt1,1, serie) filtern einige zufällige daten gt outputfilt2filter (filt2,1, serie) gt gt Wenn ihr nun diese Daten zeichnet, werdet ihr beide gefilterten Versionen sehen Sind glatter als die Eingangsdaten, aber das outputfilt2 ist glatter als outputfilt1, weil man einen längeren gleitenden durchschnittlichen filter benutzt hat. Ich glaube nicht, dass du deine Lead-Input-Variable willst, um 1 zu sein, denn das gibt dir nichts. Im nicht eine ökonomische Person, aber eine Anwendung der Verwendung dieser gleitenden Mittelwerte von verschiedenen Längen ist, die tatsächlichen Daten mit den gleitenden Durchschnitten unterschiedlicher Länge zu vergleichen (eine kurze oder führende und eine längere oder nacheilende) und sehen, wo die tatsächlichen Marktdaten fallen In Bezug auf die verschiedenen gleitenden Durchschnitte. Dies wird verwendet, um Schlussfolgerungen über die allgemeine Richtung der Zeitreihen (Markt) zu machen. Durch Ändern des Steuerungsparameters ergeben sich gewichtete Bewegungsdurchschnitte oder exponentiell. Gt gt Hoffnung, die hilft, gt wayne gt gt gt gt gt Miguel Moura ltmdNOSPAMmouragmREMOVEailgt schrieb in Nachricht ltguahs5lgk1fred. mathworksgt. Gt gt Hallo, gt gt gt gt Ich muss einen Simple Moving Average mit Periode 10 berechnen. Gt gt Wie kann ich das tun in Matlab gt gt gt gt Ich benutze movavg (Serie, 1,20,0) aber ich bin nicht Sicher, wenn das richtig ist Gt gt gt gt Was soll ich für Blei und Verzögerung verwenden gt gt gt gt Danke, gt gt Miguel Ich brauche den Simple Moving Average in seiner normalen Form zu verwenden, weil ich eine C NET Bibliothek erstellt habe, um es zu tun. Und ich benutze diese Bibliothek in Matlab und überprüfe die Aufführung. Ich möchte die SMA mit der Matlab-Funktion berechnen, um die Werte zu validieren. In der Theorie sollten die SMA-Werte gleich sein, entweder mit der C Library SMA oder der Matlab SMA, rechts In C ist mein SMA wie folgt: public static Double SMA (Doppelte Serie, Int32 Periode) Überprüfen Sie die Argumente Int32 length series. Length if (length 0) werfe neue ArgumentException (Serie kann nicht leer sein) Wenn (Periode gt Länge) neue ArgumentException (Periode kann nicht größer als Serienlänge) berechnen einfach gleitenden Durchschnitt Double sma neue Doublelength doppelte Summe sma0 für (int bar 1 bar lt Länge bar) If (bar lt Zeitraum) Summe Seriebar smabar Summe (Bar 1) sonst smabar smabar - 1 (Seriebar - Seriebar - Periode) Zeitraum Ich benutze SMA als Beispiel für die Prüfung. Hallo Miguel, du kannst deinen C-Code einfach in Matlab übersetzen. Den passenden Teil deines C-Codes doppelsumme sma0 für (int bar 1 bar lt länge bar) if (bar lt period) sum stellbar smabar sum (bar 1) sonst smabar smabar - 1 (seriesbar - serie - period) period In Matlab (Schnelle Übersetzung): sma (1) Reihe (1) für j2: Länge (Reihe) -1 wenn jltperiod sma (j) sum (Reihe (1: j)) (j1) sonst sma (j) sma (j - 1) (Serie (j) - Serie (j-Periode)) Periodenende Ende Sie erhalten aber im Wesentlichen die gleichen Ergebnisse, wenn man nur Filter () mit einem FIR-Filter verwendet, der aus einem Vektor der Längenperiode mit Koeffizienten (110) seriesrandn besteht (100,1) hones (10,1) hh.10 smamatlabfilter (h, 1, serie) period sma (1) serie (1) für j2: länge (serie) -1 wenn jltperiod sma (j) sum (serie ( 1: j)) (j1) sonst sma (j) sma (j-1) (Reihe (j) - Serie (j-Periode)) Periodenende Ende Plot (Smamatlab, b, Linienbreite, 2) halten auf Handlung (sma , R) Es gibt einige Start-up-Effekte, um mit Ihrer Methode umzugehen, aber Sie erhalten das Bild. Das Schöne an Matlab ist, dass einige tolle Entwickler eine Menge Arbeit für Sie gemacht haben. Du wirst die Früchte ihrer Arbeit ernten. Hoffe, das hilft, Wayne Miguel Moura ltmdNOSPAMmouragmREMOVEailgt schrieb in Nachricht ltgubrt2l11fred. mathworksgt. Gt Wayne König ltwmkingtygmailgt schrieb in Nachricht ltgubl6qp821fred. mathworksgt. Gt gt Hallo Miquel mit dem Steuerparameter, alpha, auf Null gesetzt. Ihre bewegten Durchschnitte werden berechnet, indem Sie Ihr Eingangssignal (Serie) mit zwei endlichen Impulsantwortfiltern der Länge N mit Filterkoeffizienten 1N falten. Der Aufruf: gt gt movavg (Serie, 3,10,0) gt gt filtert die Daten in Serie mit zwei Filtern, einer wird von Länge 3 und hat Filterkoeffizienten gt gt gt gt filt113 13 13 3 Koeffizienten gt gt Die Andere haben die Länge 10 und haben Filterkoeffizienten gt gt filt2110 110 110 110 110 110 110 110 110 110 10 Koeffizienten gt gt gt gt Sie filtern dann Ihre Eingabedaten mit diesen FIR Filtern. (Gt gt gt gt seriesrandn (100,1) erzeugen zufällige Daten gt gt outputfilt1filter (filt1,1, serie) filtern einige zufällige daten gt gt outputfilt2filter (filt2,1, serie) gt gt gt gt Wenn ihr nun diese Daten zeichnet, Wird sehen, dass beide gefilterten Versionen glatter sind als die Eingangsdaten, aber das outputfilt2 ist glatter als outputfilt1, weil man einen längeren gleitenden durchschnittlichen filter benutzt hat. Ich glaube nicht, dass du deine Lead-Input-Variable willst, um 1 zu sein, denn das gibt dir nichts. Im nicht eine ökonomische Person, aber eine Anwendung der Verwendung dieser gleitenden Mittelwerte von verschiedenen Längen ist, die tatsächlichen Daten mit den gleitenden Durchschnitten unterschiedlicher Länge zu vergleichen (eine kurze oder führende und eine längere oder nacheilende) und sehen, wo die tatsächlichen Marktdaten fallen In Bezug auf die verschiedenen gleitenden Durchschnitte. Dies wird verwendet, um Schlussfolgerungen über die allgemeine Richtung der Zeitreihen (Markt) zu machen. Durch Ändern des Steuerungsparameters ergeben sich gewichtete Bewegungsdurchschnitte oder exponentiell. Gt gt gt gt Hoffnung, die hilft, gt gt wayne gt gt gt gt gt gt gt gt gt Miguel Moura ltmdNOSPAMmouragmREMOVEailgt schrieb in Nachricht ltguahs5lgk1fred. mathworksgt. Gt gt gt Hallo, gt gt gt gt gt gt Ich brauche einen Simple Moving Average mit Periode 10 zu berechnen. Gt gt gt Wie kann ich das tun in Matlab gt gt gt gt gt gt Ich benutze movavg (Serie, 1,20, 0) aber ich bin mir nicht sicher, ob das richtig ist. Gt gt gt gt gt gt Was soll ich für Blei verwenden und gt gt gt gt gt gt Danke, gt gt gt Miguel gt gt Ich brauche den Simple Moving Average in seiner normalen Form zu verwenden, weil ich eine C NET Bibliothek erstellt habe, um es zu tun . Und ich benutze diese Bibliothek in Matlab und überprüfe die Aufführung. Gt gt Ich möchte die SMA mit Matlab Funktion berechnen, um die Werte zu validieren. Gt gt In der Theorie sollten die SMA-Werte gleich sein, entweder mit der C Library SMA oder dem Matlab SMA, rechts gt gt In C ist mein SMA wie folgt: gt gt public static Double SMA (Doppelte Serie, Int32 Periode) gt gt Überprüfen Sie Argumente Gt Int32 Längenreihe. Länge gt if (Länge 0) werfe neue ArgumentException (Serie kann nicht gt leer sein) gt if (Periode gt Länge) werfe neue ArgumentException (Periode gt kann nicht größer als Serienlänge sein) gt gt Berechnen Sie einfaches gleitendes Durchschnitt gt Double Sma new Doublelength gt gt sma0 series0 gt gt doppelsumme sma0 gt für (int bar 1 bar lt länge bar) gt gt if (bar lt period) gt gt sum serie gt smabar sum (bar 1) gt gt sonst gt gt smabar smabar - 1 (Baureihe - Baureihe - GT Periode) Periode gt gt gt gt return sma gt gt gt Ich benutze SMA als Beispiel für die Prüfung. Gt gt Danke, gt Miguel Hallo der Grund, warum ich bin mit C ist einfach. Ich schaffe ein Finanzmodell. Ich mache das Testen in Matlab, aber in Echtzeit werde ich C verwenden, da es schwierig war, Matlab an die API anzuschließen und ehrlich zu sein, die meisten API verwenden oder C. So in Echtzeit wird es eine C WPF Anwendung sein. Für die Prüfung wird es Matlab sein. Für die Koordination sollten beide Systeme dieselben Berechnungsmethoden verwenden. Also schaffe ich entweder die Algorithmen in C und schaffe eine 3.5-Bibliothek, die in Matlab verwendet werden soll. Oder ich schaffe alles in Matlab, kompiliere NET (was ich denke, es ist möglich), um in die WPF-Anwendung zu verwenden. Was würdest du mir bitte geben Vielleicht diese letzte Option, die ich denke, es wird wahrscheinlich sparen Sie mir eine Menge Arbeit. Aber was ist mit der Leistung Aber wie kann ich zB diesen Code in eine NET-Bibliothek kompilieren. Irgendwelche Ratschläge hierzu sind sehr willkommen. Vielen Dank, Miguel Wayne König ltwmkingtygmailgt schrieb in Nachricht ltgubuvu71g1fred. mathworksgt. Gt sorry miguel ein verrücktes Zeichen erscheinen für meine Aussage gt gt Zeitraum in der Code-Snippet unten. Gt gt wayne gt gt Wayne König ltwmkingtygmailgt schrieb in Nachricht ltgubuip7s81fred. mathworksgt. Gt gt Hallo Miguel, du kannst deinen C-Code einfach in Matlab übersetzen. Wenn Sie den relevanten Teil Ihres C-Codes eingeben, gt gt gt gt sma0 series0 gt gt gt gt doppelte Summe sma0 gt gt für (int bar 1 bar lt bar) gt gt gt gt if (bar lt Zeitraum) gt gt gt gt sum Seriebar Gt gt smabar sum (bar 1) gt gt gt gt sonst gt gt gt gt smabar smabar - 1 (Seriebar - Seriebar - gt gt Periode) Periode gt gt gt gt gt gt gt gt In Matlab (schnelle Übersetzung): gt gt gt gt (1) gt gt für j2: Länge (Reihe) -1 gt gt wenn jltperiod gt gt sma (j) Summe (Reihe (1: j)) (j1) gt gt sonst gt gt sma (j) Sma (j-1) (serie (j) - serie (j-period)) gt gt ende gt gt ende gt gt gt gt Aber man bekommt im Wesentlichen die gleichen Ergebnisse, wenn man nur Filter () mit einem FIR-Filter verwendet Eines Vektors der Längenperiode mit Koeffizienten (110) gt gt gt gt seriesrandn (100,1) gt gt hones (10,1) gt gt hh.10 gt gt smamatlabfilter (h, 1, Reihe) gt gt Periode gt gt sma (1) Reihe (1) gt gt für j2: Länge (Reihe) -1 gt gt wenn jltperiod gt gt sma (j) Summe (Reihe (1: j)) (j1) gt gt sonst gt gt sma (j) sma (J-1) (Reihe (j) - Serie (j-Periode)) Periode gt gt Ende gt gt Ende gt gt plot (smamatlab, b, linewidth, 2) gt gt halten auf gt gt plot (sma, r) ​​gt Gt gt gt Es gibt einige Start-up-Effekte, um mit Ihrer Methode umzugehen, aber Sie erhalten das Bild. Das Schöne an Matlab ist, dass einige tolle Entwickler eine Menge Arbeit für Sie gemacht haben. Du wirst die Früchte ihrer Arbeit ernten. Gt gt gt gt Hoffnung, die hilft, gt gt wayne gt gt gt gt gt gt Miguel Moura ltmdNOSPAMmouragmREMOVEailgt schrieb in Nachricht ltgubrt2l11fred. mathworksgt. Gt gt gt Wayne König ltwmkingtygmailgt schrieb in Nachricht ltgubl6qp821fred. mathworksgt. Gt gt gt gt Hi Miquel mit dem Steuerparameter alpha, auf Null gesetzt. Ihre bewegten Durchschnitte werden berechnet, indem Sie Ihr Eingangssignal (Serie) mit zwei endlichen Impulsantwortfiltern der Länge N mit Filterkoeffizienten 1N falten. Der Aufruf: gt gt gt gt movavg (Serie, 3,10,0) gt gt gt gt filtert die Daten in Serie mit zwei Filtern, einer wird von Länge 3 und hat Filterkoeffizienten gt gt gt gt gt gt gt gt Filt113 13 13 3 Koeffizienten gt gt gt gt Die andere hat die Länge 10 und hat Filterkoeffizienten gt gt gt gt filt2110 110 110 110 110 110 110 110 110 110 10 Koeffizienten gt gt gt gt gt gt gt gt Sie filtern dann Ihre Eingabedaten Mit diesen FIR Filtern. Gt gt gt gt gt gt gt gt seriesrandn (100,1) erzeugen einige zufällige daten gt gt gt gt outputfilt1filter (filt1,1, serie) filtern einige zufallsdaten gt gt gt gt outputfilt2filter (filt2,1, serie) gt gt gt gt Gt gt gt gt Wenn du nun diese Daten zeichnetest, wirst du sehen, dass beide gefilterten Versionen glatter sind als die Eingangsdaten, aber das outputfilt2 ist glatter als outputfilt1, weil du einen längeren gleitenden Mittelfilter benutzt hast. Ich glaube nicht, dass du deine Lead-Input-Variable willst, um 1 zu sein, denn das gibt dir nichts. Im nicht eine ökonomische Person, aber eine Anwendung der Verwendung dieser gleitenden Mittelwerte von verschiedenen Längen ist, die tatsächlichen Daten mit den gleitenden Durchschnitten unterschiedlicher Länge zu vergleichen (eine kurze oder führende und eine längere oder nacheilende) und sehen, wo die tatsächlichen Marktdaten fallen In Bezug auf die verschiedenen gleitenden Durchschnitte. Dies wird verwendet, um Schlussfolgerungen über die allgemeine Richtung der Zeitreihen (Markt) zu machen. Durch Ändern des Steuerungsparameters ergeben sich gewichtete Bewegungsdurchschnitte oder exponentiell. Gt gt gt gt gt gt gt gt Hoffnung, die hilft, gt gt gt wayne gt gt gt gt gt gt gt gt gt gt gt gt gt gt gt gt gt Miguel Moura ltmdNOSPAMmouragmREMOVEailgt schrieb in Nachricht ltguahs5lgk1fred. mathworksgt. Gt gt gt gt gt Hallo, gt gt gt gt gt gt gt gt gt Ich brauche einen Simple Moving Average mit Periode 10 zu berechnen. Gt gt gt gt gt Wie kann ich das in Matlab gt gt gt gt gt gt gt gt gt machen Gt Ich benutze movavg (Serie, 1,20,0) aber ich bin mir nicht sicher, ob das richtig ist. Gt gt gt gt gt gt gt gt gt gt Was soll ich für Blei und Verzögerung verwenden gt gt gt gt gt gt gt gt gt Danke, gt gt gt gt gt Mtuel gt gt gt gt gt gt Ich brauche den Simple Moving Average zu verwenden In seiner normalen Form, weil ich eine C NET-Bibliothek erstellt habe, um es zu tun. Und ich benutze diese Bibliothek in Matlab und überprüfe die Aufführung. Gt gt gt gt gt gt Ich möchte die SMA mit Matlab Funktion berechnen, um die Werte zu validieren. Gt gt gt gt gt gt In der Theorie sollten die SMA-Werte gleich sein, entweder mit der C Library SMA oder dem Matlab SMA, rechts gt gt gt gt gt In C ist mein SMA wie folgt: gt gt gt gt gt gt public static Double SMA (Doppelte Reihe, Int32 Periode) gt gt gt gt gt gt Überprüfen Sie die Argumente gt gt gt Int32 Längenreihe. Länge gt gt gt if (Länge 0) werfen neue ArgumentException (Serie kann nicht gt gt gt leer sein) gt gt gt if (Zeitraum Gt länge) neue ArgumentException (Periode gt gt gt kann nicht größer als Serienlänge) gt gt gt gt gt gt Berechnen Sie einfach gleitende gt gt gt gt Double sma neue Doublelength gt gt gt gt gt sma0 series0 gt gt gt gt gt double Summe sma0 gt gt gt für (int bar 1 bar lt Länge bar) gt gt gt gt gt gt if (bar lt Periode) gt gt gt gt gt gt Summe Gruppierung gt gt gt smabar Summe (bar 1) gt gt gt gt gt gt Sonst gt gt gt gt gt gt smabar smabar - 1 (seriesbar - seriesbar - gt gt gt Periode) Periode gt gt gt gt gt gt gt gt gt gt gt gt gt gt gt gt gt gt gt gt gt Ich verwende SMA als Ein Beispiel für das Testen. Gt gt gt gt gt gt Danke, gt gt gt Miguel Wayne König ltwmkingtygmailgt schrieb in Nachricht lth2auivpgk1fred. mathworksgt. Hallo Ralph, ja der gleitende Durchschnitt ist in einer kausalen Art und Weise implementiert, so dass es rückwärts schaut. In deinem Anruf movavg (Daten, 10,10, e) hast du die gleiche Verzögerung für die führenden und nacheilenden Mittelwerte, so dass du identische Ausgänge für gt gt kurze, lange movavg (Daten, 10,10, e) gt gt erhalten wirst Normalerweise wählen die Menschen unterschiedliche Werte für die gleitenden Durchschnitte. Gt gt Hoffnung, die hilft, gt wayne gt gt Ralph ltralphjbgmailgt schrieb in Nachricht lth2atdf6sc1fred. mathworksgt. Gt gt Ja, also in meinem Beispiel in wäre Zeit n, n-1. N-9 exponentieller gleitender Durchschnitt. Bin ich ok, um movavg zu verwenden (daten, 10,10, e) gt gt gt gt viel geschätzt gt gt gt gt Ralph Vertraue nicht der EMA, die Matlab implementiert. Es ist nicht der traditionelle gleitende Durchschnitt, der in der Finanzierung verwendet wird. Tatsächlich weiß ich nicht, ob ihre Version jemals benutzt wird. Mit anderen Worten, seine flache falsche IMO. Heres, was Matlab verwendet: Berechnen Sie den exponentiellen gleitenden Durchschnitt berechnen Glättungskonstante (Alpha) Alphas 2 (Perioden1) erster exponentieller Durchschnitt ist der erste Preis b (1) Asset (1) vorzuordnen Matrizen b bzeros (r-Periode, 1) Nachlaufmittel Für große Matrizen Von Eingangsdaten, FOR-Schleifen sind effizienter als die Vektorisierung. (J2-Periode) - b (j-Periode1)) Ende Zuerst ist die Zeile: nicht gut, zum Beispiel Was, wenn deine Daten so aussahen 1, 4, 6. 20, 45 dann Matlab bitten, eine 5 Periode EMA zu berechnen und es gibt dir 1 als das erste pt. Viel besser ist es, SMA für den ersten Punkt zu verwenden, und es hört nicht auf, um die tatsächliche EMA-Berechnung zu betrachten: Asset (j2-Periode) ist der Preis X Perioden vor, wenn in Wirklichkeit sollte es heute sein. Jeder Hinweis, den ich gesehen habe, gibt die Formel: EMAtoday EMAyest alpha (PRICEToday - EMAyest) Und zum Vergleich Matlab: EMAtoday EMAyest Alpha (PREIS Zeitraum vor Tagen - EMAyest) die richtige Zeile sollte lesen: Dies ist ein ziemlich ernster Fehler und kann wirklich wegwerfen Ergebnisse wie in meinem Fall. Kann nicht glauben, dass das noch nie angesprochen wurde. Sie können an Ihre Beobachtungsliste als Threads denken, die Sie Lesezeichen haben. Sie können Tags, Autoren, Threads und sogar Suchergebnisse zu Ihrer Watchlist hinzufügen. Auf diese Weise können Sie ganz einfach verfolgen Themen, die Sie interessiert sind. Um Ihre Merkliste anzuzeigen, klicken Sie auf die quotMy Newsreaderquot Link. Um Artikel zu Ihrer Watchlist hinzuzufügen, klicken Sie auf den quotadd, um listquot Link am Ende jeder Seite zu sehen. Wie kann ich einen Artikel zu meiner Merkliste hinzufügen Um Suchkriterien zu Ihrer Merkliste hinzuzufügen, suchen Sie nach dem gewünschten Begriff im Suchfeld. Klicken Sie auf die quotKlicken Sie diese Suche auf meine Watchlistliste Link auf der Suchergebnisseite. Sie können auch ein Tag zu Ihrer Watchlist hinzufügen, indem Sie nach dem Tag mit der Anweisung quottag suchen: tagnamequot wo tagname ist der Name des Tags, den Sie gerne sehen möchten. Um einen Autor zu deiner Beobachtungsliste hinzuzufügen, gehe zur Autoren-Profilseite und klicke auf den Ziffern diesen Link zu meiner Wunschliste hinzufügen. Link an der Oberseite der Seite. Du kannst auch einen Autor zu deiner Beobachtungsliste hinzufügen, indem du zu einem Thread gehst, den der Autor gepostet hat und auf den Button klicken. Diesen Link zum Merkzettel hinzufügen. Sie werden benachrichtigt, wenn der Autor einen Beitrag macht. Um einen Faden zu deiner Beobachtungsliste hinzuzufügen, geh auf die Thread-Seite und klicke auf den Ziffern diesen Thread zu meiner Watchlistliste Link am Anfang der Seite. Über Newsgroups, Newsreader und MATLAB Central Was sind Newsgroups Die Newsgroups sind ein weltweites Forum, das für jeden offen ist. Newsgroups werden verwendet, um eine Vielzahl von Themen zu diskutieren, Ankündigungen und Handelsdateien zu machen. Diskussionen sind mit Gewinde versehen oder gruppiert in einer Weise, die Ihnen erlaubt, eine gebuchte Nachricht und alle ihre Antworten in chronologischer Reihenfolge zu lesen. Dies macht es einfach, den Faden der Konversation zu folgen, und zu sehen, wasrsquos bereits gesagt wurde, bevor du deine eigene Antwort posten oder einen neuen Beitrag machst. Der Newsgroup-Inhalt wird von Servern verteilt, die von verschiedenen Organisationen im Internet vermittelt werden. Nachrichten werden mit Open-Standard-Protokollen ausgetauscht und verwaltet. Kein einziges Unternehmen ldquoownsrdquo die Newsgroups. Es gibt Tausende von Newsgroups, die jeweils ein einziges Thema oder einen interessanten Bereich behandeln. Der MATLAB Central Newsreader pflegt und zeigt Meldungen in der comp. soft-sys. matlab Newsgroup an. Wie kann ich die Newsgroups lesen oder posten? Sie können den integrierten Newsreader auf der MATLAB Central Website nutzen, um Nachrichten in dieser Newsgroup zu lesen und zu posten. MATLAB Central wird von MathWorks gehostet. Nachrichten, die durch den MATLAB Central Newsreader veröffentlicht wurden, werden von allen mit den Newsgroups gesehen, unabhängig davon, wie sie auf die Newsgroups zugreifen. Es gibt mehrere Vorteile bei der Verwendung von MATLAB Central. Ein Konto Ihr MATLAB Central Konto ist an Ihr MathWorks Account gebunden, um einen einfachen Zugriff zu erhalten. Benutze die E-Mail-Adresse deiner Wahl Mit dem MATLAB Central Newsreader kannst du eine alternative E-Mail-Adresse als Postadresse definieren, Unzufriedenheit in deinem primären Postfach vermeiden und Spam reduzieren. Spam-Kontrolle Der meisten Newsgroup-Spam wird vom MATLAB Central Newsreader gefiltert. Tagging-Nachrichten können mit einem entsprechenden Label von einem angemeldeten Benutzer versehen werden. Tags können als Schlüsselwörter verwendet werden, um bestimmte Dateien von Interesse zu finden, oder als eine Möglichkeit, Ihre bookmarked Postings zu kategorisieren. Sie können wählen, um anderen zu erlauben, Ihre Umbauten zu sehen, und Sie können Ansicht oder Suche otherrsquo Umbauten sowie die der Gemeinschaft an der großen. Tagging bietet einen Weg, um sowohl die großen Trends und die kleineren, mehr obskure Ideen und Anwendungen zu sehen. Watch-Listen Einrichten von Watch-Listen können Sie über Updates informiert werden, die an Postings, die von Autor, Thread oder beliebiger Suchvariable ausgewählt wurden. Ihre Watchlist Benachrichtigungen können per E-Mail (täglich verdaut oder sofort), in My Newsreader angezeigt oder per RSS-Feed gesendet werden. Weitere Möglichkeiten für den Zugriff auf die Newsgroups Verwenden Sie einen Newsreader über Ihre Schule, Ihren Arbeitgeber oder Ihren Internet Service Provider. Pay for newsgroup Zugang von einem kommerziellen Anbieter Verwenden Sie Google Groups Mathforum. org bietet einen Newsreader mit Zugriff auf die comp. soft sys. matlab Newsgroup Führen Sie Ihre eigenen Server. Für typische Anleitungen siehe: slyckng. phppage2 Wähle dein Land


No comments:

Post a Comment