DMUG-Archiv 2000

Frühere   Chronologischer Index   Spätere
Vorherige   Thematischer Index   Nächste

AW: AW: For-Schleife/Neue Liste für Ergebnisse

Hallo Michail,

also hier mal eine Lösung mit For und dann die Lösung von Stephen Wolfram
persönlich:

data = Table[Random[], {i, 1, 1000}]

GleitenderDurchschnitt[data_List, (n_Integer)?Positive] := Block[{s, e =
{}},
    Do[s = 0;
      Do[s = s + data[[l]], {l, i - n + 1, i}];
      AppendTo[e, s/n // N],
      {i, n, Length[data]}]; e]

ergebnis$gleitender$Durchschnitt =
  ListPlot[GleitenderDurchschnitt[data, 100]] // Timing

Das dauert {1.682 Second,
\[SkeletonIndicator]Graphics\[SkeletonIndicator]}!!

Nun im Mathematica Stil:

MovingAverage[data_List, (n_Integer)?Positive] :=
        Drop[Apply[Plus, NestList[RotateRight, data, n - 1]], n - 1]/n

ergebnis$MovingAverage = ListPlot[MovingAverage[data, 100]] // Timing

Das dauert nur noch {0.03 Second,
\[SkeletonIndicator]Graphics\[SkeletonIndicator]}!!

ergebnis$gleitender$Durchschnitt[[1]]/ergebnis$MovingAverage[[1]]

Das ganze ist auf meiner lahmen Krücke 56 mal schneller!!!!!!!!!!!!

Gruß, Peter Klamser



-----Ursprüngliche Nachricht-----
Von: Michail Koslov [mailto:koslov@XXXXXXX.de]
Gesendet: Sonntag, 9. Juli 2000 14:11
An: Peter Klamser
Cc: dmug@XXXXXXX.ch
Betreff: Re: AW: For-Schleife/Neue Liste für Ergebnisse


Hallo Peter,

vielen Dank für diesen Hinweis. Mein Problem ist jedoch allgemeiner
Natur. Ich wollte wissen, wie man in einer For-Schleife das Ergebnis
der Berechnung EINER Funktion (gleitender Durchschnitt war nur ein
Beispiel) als eine neue Liste darstellen kann.

Ganz speziell geht es bei mir um folgende Aufgabenstellung. In einer
Datenreihe möchte ich gleitend für jeweils 20 Beobachtungen
einige Funktionen berechnen lassen und dann die Ergebnisse grafisch
Darstellen.

Gruß
MK


Verweise:
Frühere   Chronologischer Index   Spätere
Vorherige   Thematischer Index   Nächste

DMUG DMUG-Archiv, http://www.mathematica.ch/archiv.html