LabVIEWForum.de
1D-Array in 2D-Array mit Clusterarray umwandeln - Druckversion

+- LabVIEWForum.de (https://www.labviewforum.de)
+-- Forum: LabVIEW (/Forum-LabVIEW)
+--- Forum: LabVIEW Allgemein (/Forum-LabVIEW-Allgemein)
+--- Thema: 1D-Array in 2D-Array mit Clusterarray umwandeln (/Thread-1D-Array-in-2D-Array-mit-Clusterarray-umwandeln)



1D-Array in 2D-Array mit Clusterarray umwandeln - Hasenfuss - 04.06.2013 10:25

Hallo!

Von einem Gerät bekomme ich ein eindimensionales Array. Das Array könnte z.B. 1000 Werte beinhalten. Die Werte von 0-9 bilden einen Block, dann von 10-19 ...

Ich bilde mir eine Clusterkonstante (später eine Typdefinition, in dem Beispiel aber noch nicht) mit 10 Elementen, die ich benennen kann, z.B. Messwert X, Messwert Y ...

Zunächst erzeuge ich aus dem 1D-Array ein 2D-Array mit entsprechender Spalten- und Zeilenzahl. So ein Array ist unübersichtlich, weil für spätere Datenweiterverarbeitung die Messwerte in unterschiedlichen Bereichen weiterverarbeitet werden. Also möchte ich aus dem 2D-Array ein Cluster-Array machen, damit die Messwerte in dem Cluster benannt werden können.

Dazu habe ich eine "Schnittstelle" gebildet in einer for-Schleife, dort die Daten in ein Cluster umgewandelt. Dann hab ich diesen unbenannten Cluster in einen benannten Cluster umgewandelt und wieder an einen indizierten Schleifenausgang gelegt, so dass ich am Ende ein Clusterarray bekomme in der Form, wie ich es haben möchte.

Das Beispiel funktioniert so gut.

Meine Frage nun - ist es möglich, dies auf eine andere Variante zu tun? Der Grund ist folgender - ich muss bei der Funktion Array mach Cluster angeben, welche "Dimension" der Cluster haben soll. Ich gehe davon aus, dass die Dimension vor dem Programmstart angegeben werden muss und ähnlich wie bei der Größe der Historiendaten bei einer Graphenanzeige nicht während der Laufzeit veränderbar ist. Das macht auch in diesem Beispiel keinen Sinn, da die entsprechende Anzahl an Verbindungslinien zwischen benannten und unbenannten Cluster angepasst werden müsste.

Eine andere Variante wäre mit zwei verschachtelten for-Schleifen zu arbeiten und die Werte dann in den Cluster übergeben, um so schnell auf eine Änderung der Anzahl der Elemente in dem Cluster reagieren zu können.

Aber geht es vielleicht auch mit einer Art "Typenumwandlung"? Es gibt in dem Bereich "Cluster, Klasse, Variant" z.B. die Funktionen nach spezifischer Klasse umwandeln.

Bieten diese Funktionen nach spezifischer Klasse / nach allgemeiner Klasse auch eine Möglichkeit, mein "Problem" auf eine elegante übersichtliche Art zu lösen?

Ich habe mal das bisherige als Bild und als LabView-Programm (in der Version 2010 gespeichert) beigefügt.

Falls mir jemand einen Tipp für eine andere Variante geben könnte, würde ich mich sehr darüber freuen. Vielen Dank im Voraus.


RE: 1D-Array in 2D-Array mit Clusterarray umwandeln - GerdW - 04.06.2013 11:09

Hallo Hasenfuss,

ich weiß nicht, warum man ein Array erst in einen Cluster umwandeln muss, damit man an dessen Elemente herankommt. Warum nicht einfach IndexArray nehmen?
[attachment=44889]

Außerdem:
Die Abfrage der Anzahl der Elemente im Cluster per PropertyNode ist zwar nicht falsch, hilft dir aber bei einer Änderung des Clusters nicht weiter. Du musst trotzdem "von Hand" alles in der FOR-Loop anpassen. Deshalb kannst du auch die Elementeanzahl per Konstante vorgeben...

Und jetzt ohne FOR-Loop:
[attachment=44890]
(Evtl. noch von Zeilen- auf Spaltenindizierung umstellen...)


RE: 1D-Array in 2D-Array mit Clusterarray umwandeln - Hasenfuss - 04.06.2013 12:33

Hallo GerdW,

Deinen Nachtrag mit der for-Schleife habe ich jetzt gelsen. Ich bin noch auf die Idee gekommen, statt Verwendung einer for-Schleife mit einer while-Schleife und einem Schieberegister zu arbeiten. Inspiriert hat mich dazu Dein Hinweis, die Funktion Array indizieren zu benutzen.

Ich werde die Variante von Dir auch gleich nochmal ausprobieren. Herzlichen Dank für Deine Hilfe und die beiden Beispiele.


RE: 1D-Array in 2D-Array mit Clusterarray umwandeln - GerdW - 04.06.2013 14:07

Hallo Hasenfuss,

zu deiner While-Schleife: Eine FOR-Loop mit Autoindizierung ist immer deinem Konstrukt vorzuziehen...


RE: 1D-Array in 2D-Array mit Clusterarray umwandeln - Hasenfuss - 04.06.2013 16:27

Hallo GerdW,

vielen Dank für Deinen Hinweis mit der indizierten for-Schleife. Ich habe mir Dein Beispiel nochmal angeschaut und es nachgebaut. Das Problem dabei ist, dass ich zwar ein Clusterarray rausbekomme, die Cluster haben aber keine Bezeichnungen und wenn ich später mit der Funktion "Cluster nach Namen aufbündeln" möchte, dann kann man sich vlt. irgendwann vertun. Ich finde es immer sehr schön, wenn die Werte einen genauen Bezeichner haben und jedes Clusterelement einen festen Bezeichner hat. Vielleicht gibt es ja noch eine weitere Möglichkeit?


RE: 1D-Array in 2D-Array mit Clusterarray umwandeln - GerdW - 04.06.2013 20:03

Hallo Hasenfuss,

einfache Lösung: Erstelle den Array-Indikator mit dem Cluster-Typedef, das du ja sowieso noch anlegen wolltest!
Dann kannst du später Array-Elemente indizieren und erhälst Cluster mit ordentlichen Labeln...