Mittelwertbildung von Array aus Signalverläufen - Druckversion +- LabVIEWForum.de (https://www.labviewforum.de) +-- Forum: LabVIEW (/Forum-LabVIEW) +--- Forum: LabVIEW Allgemein (/Forum-LabVIEW-Allgemein) +--- Thema: Mittelwertbildung von Array aus Signalverläufen (/Thread-Mittelwertbildung-von-Array-aus-Signalverlaeufen) Seiten: 1 2 |
Mittelwertbildung von Array aus Signalverläufen - LichterLichtus - 15.11.2017 08:52 Hallo zusammen, ich weiß, es gibt etliche Mittelwert-Beiträge. Ich hab zu meinem speziellen Problem aber nichts gefunden. Ich will den fließenden Mittelwert aus mehreren Signalverläufen erhalten. Die Signalverläufe sind in einem Array. Bis jetzt mache ich das so: Siehe Bild [attachment=58447] Das muss doch einfacher gehen. Hat jemand einen Tipp dazu? Schönen Gruß LichterLichtus RE: Mittelwertbildung von Array aus Signalverläufen - GerdW - 15.11.2017 09:03 Hallo Lichtus, Zitat:Ich hab zu meinem speziellen Problem aber nichts gefunden.Was genau ist denn dein "spezielles" Problem? Zitat:Ich will den fließenden Mittelwert aus mehreren Signalverläufen erhalten. Die Signalverläufe sind in einem Array.- Warum ist das Bild so blass? Warum hast du kein VI angehangen? - Warum bestimmst du den Median aus den Messwerten, wenn du eigentlich (lt. Kommentar im Bild) den Mittelwert haben willst? - Warum wird dann der Median (recht aufwändig) nochmal fließend gemittelt? - Wieso muss man (Mess-)Daten auf 3 Nachkommastellen runden? (Macht man sowas nicht eher beim Speichern der Daten?) RE: Mittelwertbildung von Array aus Signalverläufen - LichterLichtus - 15.11.2017 10:56 Hallo Gerd, Zitat:Was genau ist denn dein "spezielles" Problem?Das ich alle Signalverläufe einzeln mit der Funktion Mittelwertbildung Pt by Pt verbinden muss. For Schleife funktioniert nicht. Zitat:- Warum ist das Bild so blass? Warum hast du kein VI angehangen?Weil LV abgestürzt ist, als ich Bearbeiten>Bild in Zwischenablage geklickt hab. Das Bild zeigt meiner Meinung nach schon das Problem: Die Inplace Struktur mit sehr vielen Verbindungen. Zitat:- Warum bestimmst du den Median aus den Messwerten, wenn du eigentlich (lt. Kommentar im Bild) den Mittelwert haben willst?um aus dem Array(der sich im Signalverlauf befindet) einen Einzelwert zu bekommen. Das ist nicht mein Problem. Zitat:- Warum wird dann der Median (recht aufwändig) nochmal fließend gemittelt?Das ist mein Problem. Hier wird der Median(aus dem Signalverlaufs-Array) zur Glättung mit der Funktion Mittelwertbildung Pt by Pt behandelt. Es ist recht aufwändig. Ich würde es gerne einfacher machen. Aber wie? Zitat:- Wieso muss man (Mess-)Daten auf 3 Nachkommastellen runden? (Macht man sowas nicht eher beim Speichern der Daten?)Weil höhere Genauigkeit nicht nötig ist. RE: Mittelwertbildung von Array aus Signalverläufen - GerdW - 15.11.2017 11:19 Hallo Lichtus, Zitat:Ich würde es gerne einfacher machen. Aber wie?Eine Möglichkeit würde über eine längenbegrenzte Queue laufen: [attachment=58452] (Prinzipskizze…) Zitat:Weil höhere Genauigkeit nicht nötig ist.Deine Daten belegen haben weiterhin exakt den gleichen Speicherbedarf - du hast nur für weitere Ungenauigkeit gesorgt! (Stichwort: "Rechengenauigkeit von Floatingpoint-Zahlen") Welchen Sinn hat es, Messdaten künstlich zu verkrüppeln? Wenn du in einer Anzeige nur 3 Nachkommastellen sehen willst, kannst du deren Format so einstellen. Wenn du Messdaten nur mit 3 Nachkommastellen speichern willst, kannst du das beim Speichern erledigen. (Ist nicht wirklich wichtig, aber ich würde das gern verstehen.) RE: Mittelwertbildung von Array aus Signalverläufen - LichterLichtus - 15.11.2017 13:19 Hallo Gerd Zitat:Eine Möglichkeit würde über eine längenbegrenzte Queue laufen:Das funktioniert, man darf aber die Queue nur einmal anfordern. Wirklich einfacher ist es aber auch nicht geworden, nur kleiner. Zitat:Deine Daten belegen haben weiterhin exakt den gleichen Speicherbedarf - du hast nur für weitere Ungenauigkeit gesorgt! (Stichwort: "Rechengenauigkeit von Floatingpoint-Zahlen") Da hast du vollkommen recht. Das ist unsauber. Beim speichern will ich es aber auch nicht machen, da das Softwaremodul, welches das Speichern übernimmt von vielen Anwendungen genutzt wird. Danke RE: Mittelwertbildung von Array aus Signalverläufen - GerdW - 15.11.2017 14:05 Hallo Lichtus, Zitat:man darf aber die Queue nur einmal anfordern.Wozu willst du sie öfter anfordern? Du willst an einer Stelle den RunAvg berechnen - und an dieser einen Stelle benötigst du die Queue. Zitat:Wirklich einfacher ist es aber auch nicht geworden, nur kleiner.Du kannst auch statt einer Queue mit einem Array als Datenbuffer arbeiten. Letztendlich packt man diese Funktionalität in ein (reentrantes) VI: minimalste Version für den Einsatz, Dokumentation im VI, evtl. gleich noch eine passende Test-Umgebung dazu… RE: Mittelwertbildung von Array aus Signalverläufen - Achim - 16.11.2017 11:42 (15.11.2017 10:56 )LichterLichtus schrieb:Zitat:Was genau ist denn dein "spezielles" Problem?Das ich alle Signalverläufe einzeln mit der Funktion Mittelwertbildung Pt by Pt verbinden muss. For Schleife funktioniert nicht. Warum musst du PtbyPt verwenden? Du hast doch komplette Signalverläufe, d.h. da kommt nicht ein Wert "spontan" hinzu. Oder hab ich das missverstanden? Gleitender Mittelwert ginge auch so, und natürlich auch in einem SubVI: https://www.labviewforum.de/Thread-Signalverarbeitung-eines-Gyroskopes?pid=86078#pid86078 A. RE: Mittelwertbildung von Array aus Signalverläufen - Lucki - 16.11.2017 14:38 Ein "längenbegrenzte Queue", sofern die Elemente reine Zahlen sind, liefert auch die Funktion "Datenqueue PtByPt". Damit läßt sich eine gleitende Mittelwertbildung am Einfachsten machen: [attachment=58457] RE: Mittelwertbildung von Array aus Signalverläufen - Achim - 16.11.2017 15:21 Hm...war das jetzt eine Antwort auf meine Frage? Ich habs immer noch nicht kapiert...es kommen doch komplette Signalverläufe von irgendwoher ...also immer Pakete und nicht einzelne Werte. Warum behandelt man die dann PtbyPt? Wieviele Werte sind das in einem Verlauf? RE: Mittelwertbildung von Array aus Signalverläufen - jg - 16.11.2017 15:59 (16.11.2017 14:38 )Lucki schrieb: Ein "längenbegrenzte Queue", sofern die Elemente reine Zahlen sind, liefert auch die Funktion "Datenqueue PtByPt". Damit läßt sich eine gleitende Mittelwertbildung am Einfachsten machen:Nette Idee, aber das löst nicht das "Schönheitsproblem" des OP. Der will ja gleitende Mittelwerte für mehrere Kanäle quasi zur Erfassungszeit erstellen. Dann brauchst du dieses VI wieder parallel (oder x-mal in einer Case-Struktur), aber auf jeden Fall mehrfach - 1x für jeden Kanal. Da kann man dann auch beim MeanPtByPt bleiben. Edit: @LichterLichtus: Übersichtlicher im BD wird es, wenn du dir ein PtByPt-Mean VI für Arrays selber schreibst. Das ist kein großes Hexenwerk. Anstatt eines 1D-Array musst du halt ein 2D-Array im Speicher halten. Gruß, Jens |