Moving Average Nan Matlab




Moving Average Nan MatlabMit MATLAB, wie finde ich die 3-Tage gleitenden Durchschnitt einer bestimmten Spalte einer Matrix und hangen Sie den gleitenden Durchschnitt zu dieser Matrix Ich versuche, die 3-Tage gleitenden Durchschnitt von unten nach oben der Matrix zu berechnen. Ich habe meinen Code: Angesichts der folgenden Matrix a und Maske: Ich habe versucht Umsetzung der conv Befehl, aber ich erhalte einen Fehler. Hier ist der Befehl conv, den ich versucht habe, auf der 2. Spalte der Matrix a zu verwenden: Die Ausgabe, die ich wunsche, wird in der folgenden Matrix gegeben: Wenn Sie irgendwelche Vorschlage haben, wurde ich es sehr schatzen. Vielen Dank fur die Spalte 2 der Matrix a, ich bin die Berechnung der 3-Tage gleitenden Durchschnitt wie folgt und platziert das Ergebnis in Spalte 4 der Matrix a (Ich umbenannt Matrix a als 39desiredOutput39 nur fur Abbildung). Der 3-tagige Durchschnitt von 17, 14, 11 ist 14 der dreitagige Durchschnitt von 14, 11, 8 ist 11 der 3-Tage-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 fur die 4. Spalte, da die Berechnung fur den dreitagigen gleitenden Durchschnitt am unteren Ende beginnt. Die 39valid39 Ausgabe wird nicht angezeigt, bis mindestens 17, 14 und 11. Hoffentlich macht dies Sinn ndash Aaron 12 Juni 13 am 1:28 Im Allgemeinen wurde es helfen, wenn Sie den Fehler anzeigen wurde. In diesem Fall tun Sie zwei Dinge falsch: Zuerst muss Ihre Faltung durch drei (oder die Lange der gleitenden Durchschnitt) geteilt werden Zweitens beachten Sie die Gro?e von c. Sie konnen nicht einfach passen c in eine. Der typische Weg, um einen gleitenden Durchschnitt ware, um die gleiche: aber das sieht nicht wie Sie wollen. Stattdessen sind Sie gezwungen, ein paar Zeilen zu verwenden: Ich habe eine Matrix-Zeitreihen-Daten fur 8 Variablen mit etwa 2500 Punkten (10 Jahre mon-fri) und mochte die Mittelwerte, Varianz, Schiefe und Kurtosis bei einem Bewegen berechnen Durchschnittliche Basis. Lets sagen Frames 100 252 504 756 - Ich mochte die vier Funktionen oben auf uber jedem der (Zeit-) Frames, auf einer taglichen Basis zu berechnen, so dass die Ruckkehr fur Tag 300 in dem Fall mit 100 Tag Frame, ware Mittelwert Varianz Schiefe Kurtosis aus dem Zeitraum day201-day300 (100 Tage insgesamt). und so weiter. Ich wei?, das bedeutet, ich wurde ein Array-Ausgang, und die erste Frame-Anzahl von Tagen ware NaNs, aber ich kann nicht herausfinden, die erforderliche Indizierung, um diese getan. Jul 23, 2010, 10:31:25 pm »Dies ist eine interessante Frage, weil ich denke, die optimale Losung ist anders fur den Mittelwert, als es fur die anderen Beispiel Statistiken ist. Ive lieferte ein Simulationsbeispiel unten, dass Sie durcharbeiten konnen. Zuerst wahlen Sie einige beliebige Parameter und simulieren einige Daten: Fur den Mittelwert verwenden Sie Filter, um einen gleitenden Durchschnitt zu erhalten: Ich hatte ursprunglich gedacht, dieses Problem mit conv wie folgt zu losen: Aber wie PhilGoddard in den Kommentaren darauf hinwies, vermeidet der Filteransatz die Notwendigkeit fur die Schleife. Beachten Sie auch, dass Ive gewahlt, um die Termine in der Ausgangsmatrix entsprechen die Daten in X so in spateren Arbeit konnen Sie die gleichen Indizes fur beide verwenden. Somit werden die ersten WindowLength-1-Beobachtungen in MeanMA nan sein. Fur die Varianz, kann ich nicht sehen, wie man entweder Filter oder conv oder sogar eine laufende Summe verwenden, um die Dinge effizienter zu machen, so dass ich stattdessen die Berechnung manuell bei jeder Iteration: Wir konnten etwas beschleunigen, indem wir die Tatsache, dass wir bereits haben Berechnet den durchschnittlichen gleitenden Durchschnitt. Ersetzen Sie einfach die innerhalb der Schleife Linie in der oben mit: Allerdings bezweifle ich, dies wird viel Unterschied machen. Wenn jemand eine schlaue Weise sehen kann, um Filter oder conv zu verwenden, um die sich bewegende Fensterabweichung zu erhalten, ist sehr interessiert, es zu sehen. Ich lasse den Fall der Schiefe und Kurtosis auf die OP, da sie im Wesentlichen genau das gleiche wie das Varianzbeispiel sind, aber mit der entsprechenden Funktion. Ein letzter Punkt: Wenn Sie die oben in eine allgemeine Funktion konvertiert wurden, konnten Sie in eine anonyme Funktion als eines der Argumente ubergeben, dann hatten Sie eine gleitende durchschnittliche Routine, die fur willkurliche Auswahl von Transformationen funktioniert. Endpunkt, Endpunkt: Fur eine Sequenz von Fensterlangen, einfach Schleife uber den gesamten Code-Block fur jede Fensterlange. Ja, die Filterfunktion ist zwar besser fur den Mittelwert - aber das wollte ich fur mehrere verschiedene Funktionen tun, nicht nur fur den Mittelwert. Nur meine Antwort geschrieben, weil es fur mich gearbeitet und ich dachte, es konnte jemand anderem zu helfen. Ndash Dexter Morgan Apr 15 14 am 12:40