Wenn dein Problem oder deine Frage geklärt worden ist, markiere den Beitrag als "Lösung",
indem du auf den "Lösung" Button rechts unter dem entsprechenden Beitrag klickst. Vielen Dank!
Ich bin mit einer For Schleife plus Schieberegister ganz gut gefahren einen 2D Array zu füllen.
Sprich ich habe links an das Schieberegister eine "2D Array Konstant" vorgegeben und diese dann mit "Insert into Array" langsam gefüllt.
Später wurden die einzelnen Zeilen mit "Index Array" ausgelesen und weiterverarbeitet.
Jetzt habe ich aber das Problem, dass eine Zeile unter Umständen weniger Spalten hat als der Rest. Ist für LabVIEW kein Problem, denn die verbliebenen Stellen werden einfach mit Nullen aufgefüllt.
Leider macht das beim Auslesen Probleme, weil die zusätzlichen Nullen den Array, sprich den Befehl, verfälschen.
Also bekam ich von einem Kumpel den Hinweis das ganze doch als Cluster aufzuziehen. Dort werde dann die Länge eines jeden hinzugefügten Elements beibehalten, weil es als Element unverändert weitergegeben wird (und eben nicht als Array, den man mit Nullen auffüllen muss bis es passt!).
Jetzt habe ich nur das Problem die Art und Weise wie oben beschrieben mit einem Cluster zu realisieren. Also eine Art Dummy-Cluster vorzugeben, den ich nach und nach mit Komponenten fülle. Sowas wie "Insert into Cluster".
Gibt es das nicht?
Gibt es das in Lab View 6.1 noch nicht?
Oder gibt es eine andere Möglichkeit, wie ich die obige Problematik retten könnte? Sprich programmtechnisch die überzähligen Nullen wieder abzuschneiden...?
Bisher hast du ja ein 2D-Array of double (ich nehm jetzt einfach mal an, der Basistyp ist double) im Schieberegister. Jetzt machst du folgendes: array of cluster(array of double). Du tust jetzt also in einen Cluster einfach ein 1D-Array of double (selber Basistyp wie vorher) legen. Diesen Cluster legst du dann in das 1D-Array. Davon machst du jetzt eine (leere) Konstante und hängst die an den Schieberegistereingang. Du musst nicht mal das "Insert to Array" ändern. Es muss alles so passen wie bisher.
Sowas wie "Insert into Cluster" brauchst du gar nicht. Du hast jetzt ein 1D-Array mit dem "Basistyp" Cluster.
Jeder, der zur wahren Erkenntnis hindurchdringen will, muss den Berg Schwierigkeit alleine erklimmen (Helen Keller).
-------------------------------------------------------------------------- Bitte stellt mir keine Fragen über PM, dafür ist das Forum da - andere haben vielleicht auch Interesse an der Antwort !!
--------------------------------------------------------------------------
Sorry, aber mein Problem liegt weiter vorne, bei der Erzeugung des Clusters.
Mein Problem liegt eben genau darin, dass von vorneherein nicht klar ist wie viele Cluster ich benötige. Das entscheidet der User durch die Parameter.
Von daher scheint mir die Erklärung von IchSelbst als das was ich benötige, doch leider muss ich sagen...
...mea maxima culpa...
aber: HÄ?
IchSelbst schrieb:Bisher hast du ja ein 2D-Array of double (ich nehm jetzt einfach mal an, der Basistyp ist double) im Schieberegister. Jetzt machst du folgendes: array of cluster(array of double). Du tust jetzt also in einen Cluster einfach ein 1D-Array of double (selber Basistyp wie vorher) legen. Diesen Cluster legst du dann in das 1D-Array. Davon machst du jetzt eine (leere) Konstante und hängst die an den Schieberegistereingang.
Also ich denke ja, dass ich das Prinzip verstanden habe:
Ich stell mir das so vor, dass ich eine Matrix (2D Array) (nicht ganz sauber) auch so darstellen könnte, dass ich einen Spaltenvektor (1D Array) nehme und jeder Eintrag jetzt einen Zeilenvektor (1D Array) darstellt.
Und in LabVIEW sieht das nun so aus, dass ich also einen 1D Array vorgebe, mit dem ich wie bisher weiterverfahre (Insert into Array, Index Array), nur dass meine Einträge jetzt die besagten Cluster sind. Und diese Cluster sind wierum 1D Arrays.
Nur da ich sie jetzt als Cluster in den Array packe, wird da nichts mit Nullen aufgefüllt, weil es eben kein 2D Array ist und die Komponenten, sprich Cluster, unberührt bleiben.
Nur an der Ausführung hakt es noch.
Z.B. habe ich das Array of cluster nicht gefunden. Meinst du "Build Cluster Array" ?
Und wie ist das dann genau zu verstehen? Also ich packe einen 1D Array in einen Cluster in einen 1D Array? Habe ich das so richtig verstanden?
Und nein, ich arbeite nicht mit doubles...ach ich lad mal (wie eh immer am Besten ) einen Screenshot hoch.
Dieser Array, der da jetzt rausgeht, soll dann ans Schieberegister gehängt werden, um noch weiter aufgefüllt zu werden.
IchSelbst schrieb:Jetzt machst du folgendes: array of cluster(array of double). Du tust jetzt also in einen Cluster einfach ein 1D-Array of double (selber Basistyp wie vorher) legen. Diesen Cluster legst du dann in das 1D-Array. Davon machst du jetzt eine (leere) Konstante
Na immerhin habe ich das hinbekommen, aber insgesamt funktioniert es noch nicht.
Ich habe doch jetzt wie du oben beschrieben hast einen 1D Array angelegt, der als Einträge Clusters hat, die als Einträge wiederum 1D Arrays besitzen....oder?
Also muss ich doch einen 1D Array, mit dem ich den obigen Füllen will, erstmal in einen Cluster umwandeln...dachte ich.
Nur irgendwo scheint da noch ein Gedankenfehler meinerseits zu liegen. -_-
' schrieb:Na immerhin habe ich das hinbekommen, aber insgesamt funktioniert es noch nicht.
Das kriegen wir schon.
Erschwerend kommt halt hinzu, dass ich zwar Zeit habe, zu antworten, hier aber kein LV habe.
Zitat:Ich habe doch jetzt wie du oben beschrieben hast einen 1D Array angelegt, der als Einträge Clusters hat, die als Einträge wiederum 1D Arrays besitzen....oder?
Jawohl.
Zitat:Also muss ich doch einen 1D Array, mit dem ich den obigen Füllen will, erstmal in einen Cluster umwandeln
Nein, nicht umwandeln. Sondern mittels des Cluster-Elementes "nach Namen bündeln" den Cluster-Inhalt ersetzen!
Jeder, der zur wahren Erkenntnis hindurchdringen will, muss den Berg Schwierigkeit alleine erklimmen (Helen Keller).
IchSelbst schrieb:Nein, nicht umwandeln. Sondern mittels des Cluster-Elementes "nach Namen bündeln" den Cluster-Inhalt ersetzen!
Du meinst so?
Geht aber irgendwie auch nit.
Aber ich will doch nix ersetzen, sondern an die erste Stelle meines 1D Arrays setzen. Denn dieser Array soll dann später an das Schieberegister gehängt und weiter aufgefüllt werden.
Oder werf ich da noch verschiedene Sachen durcheinander?
Muss aber.
Gib mal dem Array im Cluster einen Namen (ganz oben im Kontextmenü des Arrays "Beschriftung" auswählen und Namen vergeben). Dieser Name muss dann im Bündeln stehen.
Zitat:Aber ich will doch nix ersetzen, sondern an die erste Stelle meines 1D Arrays setzen.
Das Ersetzen ist ja nur das Datenschreiben in den Cluster. Dieser Cluster dann, also der Ausgang ebendieses Elementes, wird zum Array aufaddiert (Array erstellen etc.). Dieser Cluster ist ja der Basistyp des nächsten Arrays. Also einfach nach der "Verclusterung" mit den üblichen Array-Elementen weitermachen.
Jeder, der zur wahren Erkenntnis hindurchdringen will, muss den Berg Schwierigkeit alleine erklimmen (Helen Keller).