LabVIEWForum.de - 2D-Array -Mittelwert für gleiche x-Werte

LabVIEWForum.de

Normale Version: 2D-Array -Mittelwert für gleiche x-Werte
Du siehst gerade eine vereinfachte Darstellung unserer Inhalte. Normale Ansicht mit richtiger Formatierung.
Hallo Zusammen,

ich habe ein Problem mit einem 2D Array und komme einfach nicht weiter.

Ich habe Messdaten mit mehreren y-Werte für einen x-Wert in einer Textfile:
Bsp:
956.250779 -0.003333
957.200408 -0.003333
955.836955 -0.006667
956.364345 -0.006667
956.043153 -0.010000
957.877227 -0.010000
956.156469 -0.013333
958.252069 -0.013333
956.606888 -0.013333
956.582763 -0.016667
955.695732 -0.016667
.....

Nun möchte ich für gleiche x-Werte Mittelwerte bilden. X-Werte sind in der rechten Spalte.

Mein VI ist bis jetzt so, das es die x-Werte von aufeinanderfolgenden Zeilen vergleicht und eine 1 in eine neue Spalte setzt,
wenn die x-Werte unterschiedlich sind, ansonsten wird 0 gesetzt. Dann suche ich in dem Array nach den Einsern und gebe mir die Indizes und Anzahl bis zur nächsten 1 aus.
Das klappt auch für den ersten Bereich. Ich hab schon vieles probiert aber ich schaffe es nicht, das das VI das ganze für alle Indizes wiederholt.
Ich hoffe es ist einigermaßen verständlich forumliert.
Hallo crusty,

Zitat:Nun möchte ich für gleiche x-Werte Mittelwerte bilden. X-Werte sind in der rechten Spalte.
Sind das die "echten" Werte oder gerundete Darstellungen? Dir ist schon bekannt, das Floats immer Rundungsfehlern unterliegen und dass man Floats nicht auf Gleichheit überprüfen sollte?

Hier im Beispiel mache ich das trotzdem mal, um dir das Prinzip zu demonstrieren:
[attachment=50330]
- Ohne Kommentare zum "Selberentdecken" des Codes Smile
- Ohne Betrachtung von Randeffekten…
Danke für die schnelle Antwort.

Ich ziehe die x-Werte ja aus der Textfile. Somit habe ich eine relativ kleine Anzahl von Dezimalstellen und da tritt auch kein Rundungsfehler auf.
Ich schaffe es ja auch die Indizes der Zeilen, welche eine andere Position als die davor aufweisen, zu extrahieren.
(edit: Mir ist gerade aufgefallen das das hochgeladene VI die Indizes nicht komplett extrahiert. Da fehlt noch eine extra For-Schleife)

Kann natürlich sein das ich dich falsch verstanden habe.
Hallo crusty,

häng dein VI mal in LV2011 an…
Hier das VI für 2011.
Hallo crusty,

- Du solltest unbedingt lernen, was sich hinter dem Begriff Autoindizierung verbirgt!
- Du solltest dir mein Beispiel anschauen. Da es ein Snippet ist, kannst du es sogar in LabVIEW laden…

PseudoCode:
Code:
summe := 0
anzahl := 0
FOR alle X-Werte
   IF aktueller X-Wert == vorheriger X-Wert
   THEN
      summe := summe + Y-Wert
      anzahl++
   ELSE
      neuer durchschnittswert := summe / anzahl
      summe := Y-Wert
      anzahl := 1
   ENDIF
NEXT
Vielen Dank.

Es funktioniert. Da habe ich mich wohl total im Wald vor lauter Bäumen verlaufen.

Grüße
Crusty
Referenz-URLs