Durchschnitt von Maximalwerten
-
Salve.
Ich suche eine einfache Berechnungsmöglichkeit.
Ich habe eine unbekannte Anzahl an Doublewerten von einer Meßwertaufnahme.
Diese steigen nahezu linear an (Wert 0 bis ca 500) und am Ende fallen sie steil ab (500 bis 520). Daraus soll der Durchschnitt der 10 größten zusammenhängenden Werte berechnet werden. Problem ist die Schwankung aufgrund der Analogwertaufnahme.Hat jemand zufällig einen einfachen Lösungsweg ohne die ersten 10 Werte zu nehmen den Durchschnitt zu berechnen, dann die Werte 2 bis 11 nehmen den Durchschnitt zu berechnen und mit dem vorherigen Durchschnitt vergleichen und so weiter und so fort.
Schönen Feierabend.
-
Dafür gibt's wohl keine Abkürzung [außer Du würdest Annahmen über den Inhalt des Vektors treffen, aber bei Meßwerten ist sowas immer haarig].
Du kannst aber die Berechnung der Mwerte vereinfachen - ein trivialer Ansatz ist ja immer ein for akt...akt+10 und darüber alles summieren, dann durch 10 teilen.
Zunächst mal mußt Du nicht die Mittelwerte vergleichen, sondern es reicht aus wenn Du die Summe vergleichst - denn es gilt:
a < b <=> a / n < b / n falls n > 0
Also schon mal die Division gespart.
Und nun kannst Du es Dir auch noch ersparen rund 500 mal eine 10er Schleife für die Summation zu machen - Du läßt Deine Summe als gleitenden Wert über den Vektor rutschen. Ich zeige es Dir mit einer Summe über 3 Werte bei einem Array von 6 Werten:
Array: 3, 5, 2, 8, 9, 1
Zuerst 3er Summe bilden:
Summe = 3 + 5 + 2 = 10 => 1. Summe für 1-3
Nun loopen:
Summe = Summe - Element[0] + Element[3]
= 10 - 3 + 8 = 15 => 2. Summe für 2-4Summe = Summe - Element[1] + Element[4]
= 15 - 5 + 9 = 19 => 3. Summe für 3-5Summe = Summe - Element[2] + Element[5]
= 19 - 2 + 1 = 18 => 4. Summe für 4-6Die berechnete Summe mußt Du dann einfach mit der (gespeicherten) Vorgängersumme vergleichen und bei einem Maximum Dir den Beginn des 1. Elements der Summe merken, woraus Du später den Beginn der Folge bekommst.
Kürzere Wege fallen mir nicht ein. Ist im Grunde ein Ansatz aus der Welt der digitalen Filter.
-
Danke
Ist zwar der gleiche Ansatz, aber wesentlich eleganter.