Wenn dein Problem oder deine Frage geklärt worden ist, markiere den Beitrag als "Lösung",
indem du auf den "Lösung" Button rechts unter dem entsprechenden Beitrag klickst. Vielen Dank!
ich möchte die Arrays meiner Messwerte mitteln, d.h. ich möchte beispielsweise 5 Arrays mit je 1000 Messwerten aufnehmen und diese dann elementweise addieren und durch 5 teilen, damit ich eine gemittelte Kurve bekomme. Das ganze soll als Ringpuffer fungieren, also das älteste Array immer raus, das neueste rein und dann Mittelwert elementweise für alle 5 Arrays.
ich geh jetzt einfach davon aus das deine messung in irgend einer schleife ist.
klick auf den rechten oder linken Rahmen der schleife und wähle "schieberegister hinzufügen".
Da schliest du an der rechten seite der schleife deine messung an.
Links kannst du das schieberegister nach unten aufziehen, das du vier anschlüsse erhältst.
Da kannst du jetzt die messwerte der letzten 4 schleifendurchläufe abholen und eben mit deinem aktuellen verrechnen.
Achtung: die 4 anschlüssse solltest du initiallisieren. auserhalb der schleife was anschliessen.
Grüße
Achimedes
Wer Rechtschreibfehler findet .... darf sie behalten.
Danke, das mit den Schieberegistern ist ne Möglichkeit. Aber dann kann ich meine Ringpuffergröße nicht dynamisch einstellen!
Das würde ich allerdings ganz gerne!
Die Lösung von Dimitri funktioniert nur mit einzelnen Werten, nicht mir Arrays, jedenfalls soweit ichs versteh.
Warum sind es 5 Arrays mit je 1000 Elementen und nicht eins mit 5000 Elementen?
Warum musst du überhaupt deine Messwerte in Arrays ansammeln um danach einen Mittelwert zu bilden? Ich meine es frisst doch dein RAM?!
Übrigens, sobald ich das Wort "Ringbuffer" höre, denke ich direkt an Lossy Queue. Das Problem dabei ist, dass die Größe eines solchen Puffers nicht dynamisch einstellbar ist. Aber, ich glaube, ich habe schon eine Lösung dafür im Kopf
' schrieb:ich möchte die Arrays meiner Messwerte mitteln, d.h. ich möchte beispielsweise 5 Arrays mit je 1000 Messwerten aufnehmen und diese dann elementweise addieren und durch 5 teilen, damit ich eine gemittelte Kurve bekomme. Das ganze soll als Ringpuffer fungieren, also das älteste Array immer raus, das neueste rein und dann Mittelwert elementweise für alle 5 Arrays.
Würde gern helfen, aber da müßte ich zu sehr raten, wie Du es genau meinst...
Aber vielleicht hilft das: Den Ringpuffer gibt es auch als Funktion, und die Größe ließe sich dort dynamisch einstellen. Allerdings nur für ein einfaches Element. Wenn Du 5 Elemente hast, dann müßtest Du 5 solche Puffer verwenden (Was kein Problem wäre)
Sehr gut versteckt in: Signalverarbeitung Punkt für Punkt weitere Funktionen Daten Queue
' schrieb:@Ome, ich hätte es auch mit Lossy Queue gemacht
Übrigens, sobald ich das Wort "Ringbuffer" höre, denke ich direkt an Lossy Queue. Das Problem dabei ist, dass die Größe eines solchen Puffers nicht dynamisch einstellbar ist. Aber, ich glaube, ich habe schon eine Lösung dafür im Kopf
Ja das drängt sich gerade zu auf
Die Frage ist was er mit Dynamisch meint... mehr oder weniger ist ja die Anzahl der Elemente im Queue während der Laufzeit des Programms einstellbar nur halt nicht während der Queue verwendet wird.