LabVIEWForum.de
Ringpuffer - aber wie? - Druckversion

+- LabVIEWForum.de (https://www.labviewforum.de)
+-- Forum: LabVIEW (/Forum-LabVIEW)
+--- Forum: LabVIEW Allgemein (/Forum-LabVIEW-Allgemein)
+--- Thema: Ringpuffer - aber wie? (/Thread-Ringpuffer-aber-wie)

Seiten: 1 2


Ringpuffer - aber wie? - dommae - 18.05.2010 15:00

Sers an alle,

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.

Wie geht das?

Danke schonmal für die Hilfe!!!

Grüße,

Thomsen


Ringpuffer - aber wie? - dimitri84 - 18.05.2010 15:04

Gibt's fertig: Signalverarbeitung -> Punkt für Punkt -> Wahrscheinlichkeit und Statistik (Punkt für Punkt) -> Mittelwert

Gruß dimitri


Ringpuffer - aber wie? - Achimedes - 18.05.2010 15:08

Hallo,

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


Ringpuffer - aber wie? - dommae - 18.05.2010 15:12

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.


Ringpuffer - aber wie? - Ome - 18.05.2010 15:48

Hallo,

das immer die 5 neusten Arrays verarbeitet werden, kannst du mit Queues erreichen.

Bsp gibt es hier: http://www.LabVIEWforum.de/index.php?s=&am...ost&p=87814

Das Arithmetik geht dann in einer For-Schleife...

Gruß Ome


Ringpuffer - aber wie? - eg - 18.05.2010 15:49

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?!


Ringpuffer - aber wie? - Ome - 18.05.2010 16:28

Wer weiß wieso er es so will... hier mal 'nen Lösungsvorschlag.

Gruß Ome


Ringpuffer - aber wie? - eg - 18.05.2010 16:43

@Ome, ich hätte es auch mit Lossy Queue gemacht Wink

Ü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 KopfBig Grin


Ringpuffer - aber wie? - Lucki - 18.05.2010 17:45

' 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


Ringpuffer - aber wie? - Ome - 18.05.2010 18:24

' schrieb:@Ome, ich hätte es auch mit Lossy Queue gemacht Wink

Ü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 KopfBig Grin

Ja das drängt sich gerade zu aufBig Grin

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.