Wie setzte ich die rekursive gleitende Mittelwertformel in C++ um(Mathematisches Problem)? Ich glaube, ich habe da einen Denkfehler?
Das ist die besagte Formel:
Nun wollte ich das so umsetzten, dass ich anfangs einen Ringspeicher habe, der mit Nullen befüllt ist, z.B bei N = 5 wäre das Array 'arr' = [0, 0, 0, 0, 0]. So weit so gut.
Nun setze ich eine Variable x̄_temp = 0, welche den zuvor berechneten gleitenden Mittelwert hält.
Wenn ich nun die Formel beim ersten Durchlauf anwenden möchte, stoße ich auf folgendes Problem. Berechnen will man x̄_0+1 = x̄_1. Man stell die Formel so um, dass sich 'x̄_i - (x_(i-N+1 + x_(i+1))/N' ergibt. Nun setze ich meine Anfangswerte ein:
x̄_0 - (x_(0-5+1) + x_(0+1)/5 = 0 - (x_(-4) + x_1)/5.
Mittels Modulo greife ich auf den Ringspeicher zu, doch da scheint schon etwas nicht so zu klappen, wie ich mir das vorgestellt habe.
x_(-4) ist der Wert, welcher sich am Index 1 im Array befindet, da 0->5->4->3->2. x_1 ist aber auch der Wert, der sich am Index 1 im Array befindet, da 0->1...
Was genau mache ich da falsch?
2 Antworten
Ich verstehe deine ganzen Formeln zwar nicht... (ist mir zu anstrengend das nach zu vollziehen... aber mit Modulo zu arbeiten erscheint mir falsch. Modulo ist doch der Rest einer geteilt durch Aufgabe... mod (10 % 3) = 1
Achso, das hatte ich vergessen zu sagen glaube ich. Wir benutzen einen Ringspeicher, also ein Array in dem wir den ältesten Wert durch den neuesten Wert austauschen
Nun, dann brauchst du wohl einen größeren Ringspeicher. Der muss die Größe N+1 haben (Intervall [-N+1; 1]).