LabVIEWForum.de - Daten aus 2D Array in 3D Array umwandeln

LabVIEWForum.de

Normale Version: Daten aus 2D Array in 3D Array umwandeln
Du siehst gerade eine vereinfachte Darstellung unserer Inhalte. Normale Ansicht mit richtiger Formatierung.
Hallo,

Ich habe Daten in einem 2D Array. Das sind XYZ Koordinaten aus einem Positioniersystem (Spalte 1-3) und ein W Messwert in der 4. Spalte. Ich hätte nun gerne die XYZ Koordinaten in einem 3D Array, um es einem 3D Plot zu übergeben. Der Messwert W soll dann auch im Plot auch noch als Farbe an den jeweiligen Positionen dargestellt werden, aber dafür habe ich schon eine Vorlage.
Hat jemand eine Idee? Würde mich sehr über ein paar Infos freuen, weil ich schon einige Zeit an diesem Problem hänge.
Ich nehme mal an, du willst deine Daten mit dem 3D-Graphen von LabVIEW darstellen.

Da brauchst du doch gar kein 3 dimensionales Array als Eingang?!

Deshalb mal Rückfrage: Wie ist deine Messung denn aufgebaut? X- und Y-Achse jeweils äquidistant? Dann bietet sich ein 2D-Array der z- und w-Messdaten an.
Anderfalls brauchst du eher 1D-Arrays für x-, y- z- und w-Werte. Und die kriegst du einfach über Index-Array Operationen. Dann noch die richtige Darstellung beim 3D-Graphen wählen, und es sollte (so aus dem Bauch heraus) funktionieren.

Ansonsten, lade doch mal ein (reduziertes) Datenset hoch.

MfG, Jens
Vielen Dank für deine Antwort, aber leider funktioniert das so nicht. Wie du schon vermutet hast habe ich für X und Y unterschiedliche Schrittweiten, d.h. ich muss beide dem 3D Plot zuführen, damit die Achsen entsprechend skaliert werden. Ich habe mir aus dem englischen Forum eine Lösung für die Darstellung mit Hilfe von Eigenschaftsknoten gesucht. Und dazu brauche ich ein 3D Array. Du kannst es dir ja mal anschauen. Wenn du eine bessere Idee hast lass sie mich wissen. Ich habe ein VI angehängt, in dem ich das 3D Array gerne einbauen möchte. Es soll in die drei For-Schleifen reinlaufen und diese dabei autoindizieren. Danach wieder raus und in den W-Eingang vom 3D-parametric-surface. Auf diese Weise bekomme ich für alle 4 Eingänge 3D Arrays. Oder nicht? Ich habe das aus einem Beispiel aus dem englischen Forum. Leider konnte ich es noch nicht ausprobieren, weil mir das 3D Array fehlt. Ich kann auch gerne mal das Beispiel posten. Jetzt aber erstmal nur die abgespeckte Version in LV Version 8.5
Hab das VI vergessen...Lv85_img
Bitte beim nächsten Mal die Version des VIs angeben.

Gruß Markus

' schrieb:Hab das VI vergessen...
' schrieb:Hab das VI vergessen...Lv85_img
Hmm
Wo wird in diesem Beispiel ein 3D-Array gebraucht? Ich entdecke nur 2D-Arrays!
Ok sorry, das soll ungefähr so aussehen. Nur dass da natürlich richtige Daten reingehen. Aber jetzt wo ich es sehe fällt mir auch auf, dass da 2D Daten reingehen. Wall Aber um ehrlich zu sein komme ich trotzdem nicht darauf, wie ich dem VI die Daten aus meinem 2D Datenarray präsentieren soll. Die Datei mit den Daten habe ich angehängt.
Lv85_img
Also, dein Bsp zeigt ja mehrere Plots im 3D-Graphen an, da kann man das natürlich mit einem 3D-Array machen.

Dann: Natürlich liegen deine Daten auf einem Raster...

Und hier als Beispiel, ich finde, der 3D Mesh Plot mit 1D-Arrays sieht doch gut aus:

[attachment=12118]
[attachment=12119]

MfG, Jens
Ok, das sieht schon ziemlich gut aus. Vielen Dank dafür. Jetzt habe ich aber noch zwei weitere Probleme:
1. habe ich mehr als nur eine Ebene, d.h. die Z-Koordinate stellt die Höhe in meinem gemessenen Raum dar und ich messe aufeinanderfolgend in mehreren Höhen. Nach Möglichkeit möchte ich diese Messungen gleichzeitig in einem Plot darstellen.
2. wäre es schön, wenn die X und Y Achsen umgekehrt skaliert wären, also die negativen Bereiche in der vorderen Ecke sind

Ich habe nochmal ein anderes Datenfile angehängt (der Name ist der gleiche, Daten sind andere). Hier gibt es jetzt mehrere Z-Ebenen und alle sollen in einem Plot ausgegeben werden. Kann man das über eine For-Schleife machen und den Schleifenzähler mit der Itemnummer verbinden? Dann müsste man ja aber das Datenarray irgendwie zerteilen, sodass bei jedem Schleifendurchlauf nur ein Teil der Daten an die Schleife übergeben wird. Ich weiß aber nicht, wie ich die Teil-Daten dann sinnvoll aus dem Array holen soll, weil Bereiche bei jeder Messung anders sein können.
' schrieb:Ok, das sieht schon ziemlich gut aus. Vielen Dank dafür. Jetzt habe ich aber noch zwei weitere Probleme:
1. habe ich mehr als nur eine Ebene, d.h. die Z-Koordinate stellt die Höhe in meinem gemessenen Raum dar und ich messe aufeinanderfolgend in mehreren Höhen. Nach Möglichkeit möchte ich diese Messungen gleichzeitig in einem Plot darstellen.
Dann brauchst du sehr wahrscheinlich die mehreren Plots, so wie in deinem Beispiel.
' schrieb:2. wäre es schön, wenn die X und Y Achsen umgekehrt skaliert wären, also die negativen Bereiche in der vorderen Ecke sind
Das geht in den Eigenschaften des 3D-Graphen. Rechtsklick->CWGraph3D->Eigenschaften. Irgendwo kann man die Achseneigenschaften editieren.
' schrieb:Ich habe nochmal ein anderes Datenfile angehängt (der Name ist der gleiche, Daten sind andere). Hier gibt es jetzt mehrere Z-Ebenen und alle sollen in einem Plot ausgegeben werden. Kann man das über eine For-Schleife machen und den Schleifenzähler mit der Itemnummer verbinden? Dann müsste man ja aber das Datenarray irgendwie zerteilen, sodass bei jedem Schleifendurchlauf nur ein Teil der Daten an die Schleife übergeben wird. Ich weiß aber nicht, wie ich die Teil-Daten dann sinnvoll aus dem Array holen soll, weil Bereiche bei jeder Messung anders sein können.
Also, eine Zerteilfunktion für deine Messung schreib ich dir jetzt aber erst mal nicht.
Idee: Du suchst im z-Array, wann sich der Wert ändert. Hier musst du zerteilen. Das funktioniert natürlich nur, wenn dein Datenfile sozusagen ebenenweise aufgebaut ist.

MfG, Jens
Referenz-URLs