LabVIEWForum.de - Array nach einem bestimmten Muster füllen

LabVIEWForum.de

Normale Version: Array nach einem bestimmten Muster füllen
Du siehst gerade eine vereinfachte Darstellung unserer Inhalte. Normale Ansicht mit richtiger Formatierung.
Guten Abend zusammen,
ich bin ein LabView Neuling und arbeite gerade an meiner Technikerarbeit.
Habe mir aber bereits ein Basiswissen über LabView angeeignet.

Kurz zu der Aufgabenstellung
Es sollen mit Hilfe eines LCR-Meters, das von LabView gesteuert wird,
Messungen durchgeführt werden.(SubVi für LCR-Meter bereits verfügbar)

Die Messpunkte sind rasterförmig angeordnet und die Messung soll immer zwischen zwei nebeneinander liegenden Messpunkten erfolgen.
Die Messwerte sollen in ein Array reingeschrieben werden und graphisch dargestellt werden (3d-Graph).

Nun habe ich das Problem, dass die Messwerte in die richtigen felder im Array abgelegt werden.

Ich habe eine Skizze beigefügt um zu zeigen wie ich es mir in etwa vorgestellt habe.
Der gemessen Wert soll immer in 4 Felder geschrieben werden. (4er Paket)
(4 Felder weil ich eine Fläche im 3D graph haben möchte und kein Punkt)

Graue Felder sollen die Messpunkte sein und dürfen nicht beschrieben werden (bzw. da soll eine 0 stehen bleiben)

Bei der Messung soll das Array Zeile für Ziele beschrieben werden
- erst die alle grünen (1) (waagerechte Messungen)
- dann die orangenen (2) (senkrechte Messungen)
- und am Ende die roten (3) (diagonale Messungen)

Ich habe bereits mit For-Schleifen und sämtlichen Arrayfunktionen experementiert, bekomme aber höchstens eine Spalte hin.

Habt ihr vlt. eine Idee oder Anregung wie man das machen könnte.
Oder gibt es irgendwelche andere Möglichkeit (Einstellungen o ä.) im 3d-Graph den Punkt als Fläche darzustellen?

Ich hoffe ich habe es einigermaßen verständlich erklärt.
Hallo tgx,

da du derjenige bist, der den Messablauf programmiert, sollte es dir auch möglich sein, aus der Nummer der aktuellen Messung den Platz im Array zu berechnen!

Überlege dir eine Formel (Modulo-Rechnung hilft da immer ganz gut), mit der du von Messnummer zu Arrayindex kommst. Dann einfach mit ReplaceArraySubset die Werte in ein vordefiniertes Array der richtigen Größe eintragen! Wie die Formel auszusehen hat, ist aus deinem Bild leider nicht zu erkennen - es fehlt die Angabe der Messreihenfolge...
Danke für die schnelle Antwort!

Mit der Formel (ohne Modulo) habe ich bereits probiert, allerdings ohne Erfolg
aber ich probiere es nochmal mit Modulo.

Ich denke mit einer Formel wird es nicht machbar sein da es 3 versch. Anordnungen sind.

Die Reihenfolge habe ich mir wie die im Anhang gedacht, einfach von links nach rechts und dann Zeile für Zeile.
Wie schon geschrieben sollen erst alle grünen Wesswerte eingetragen werden, dann die orangenen und am Ende die roten.

Die Messnummer würde ich evtl. aus einer While-Schleife beziehen.
Hallo tgx,

ich habe aus purer Langeweile mal in wenigen Minuten eine Füllroutine gebastelt, die deinen Anforderungen entspricht:
[attachment=42610]
Ich habe es nur auf ein 6*6-Array beschränkt mit je 9 grünen, orangen und roten Einträgen (durchnummeriert von 1 bis 27). Du darfst das jetzt für dein größeres Array anpassen und dir dabei überlegen, warum der Algorithmus so funktioniert. Wie ich sagte: du brauchst nur etwas Modulo-Arithmetik!

(Ich musste mal eine Scanner-Matrix abbilden: 400 Schalter in einer 20×20-Matrix, denen 200 Kanäle zugeordnet waren - glücklicherweise nach einer sinnvollen [d.h. mathematisch abbildbaren] Anordnung!)
Hallo GerdW,

Danke nochmal für deine Hilfe!

Ich werde die Variante bei Gelegenheit genauer anschauen und auch ausprobieren.

Ich habe mittlerweile auch eine Lösung aber die ist "weniger elegant".

Fürs erste tut es aber erstmal auch. Big Grin
Vom Ausgang Deines "Initialize Array" würde ich aber noch eine Verbindung zur Sequenz ziehen. Nur weil es links davon ist, heißt es noch lange nicht, dass es "vor" der Sequenz ausgeführt wird.
Ansonsten: Interessantes Konstrukt. Big Grin

Gruß Markus
Referenz-URLs