LabVIEWForum.de - Einfügen eines Clusters in 1D-Array

LabVIEWForum.de

Normale Version: Einfügen eines Clusters in 1D-Array
Du siehst gerade eine vereinfachte Darstellung unserer Inhalte. Normale Ansicht mit richtiger Formatierung.
Hallo,

zunächst vielen Dank für dieses hervorragende Forum. Ich lese schon eine Weile mit - und konnte mir auch damit schon einige Fragen sparen - aber jetzt komme ich einfach nicht weiter.

Zunächst die Aufgabenstellung:
In einem Eingangsarray (2D) befinden sich 3 Spalten und beliebige Zeilen. Die erste Spalte gibt die Bauteilnummer an. In der 2. und 3. Spalte befindet sich ein Wertepaar aus Widerstand und dazugehöriger Temperatur. Diese Art des Arrays ist bei der Erfassung der Daten sehr praktisch. Für die Auswertung möchte ich jedoch eine Struktur haben, bei der die einzelnen Messungen eines Bauteils in einer Tabelle zusammengefasst sind (also alle Wertepaare aus Temperatur und Widerstand eines Bauteils in einer Tabelle). Dazu habe ich mir ein Cluster gebaut, in dem ein 2D-Array ist. Dieses Cluster befindet sich in einem 1DArray, damit ich es mit dem Index ansprechen kann. Es handelt sich hier um ein vereinfachtes Beispiel - später soll dieses äußere Array ein 3D-Array werden (Bauteil, Messbrücke, Widerstand innerhalb der Brücke).

Meine Lösungsversuche (VI und Screenshots habe ich angehängt. Eigentlich schein auch alles zu funktionieren, aber leider wird das Ausgangsarray vom VI "Teilarray ersetzen" nicht geändert (vielleicht weil es im ersten Durchlauf natürlich noch leer ist).

Warum ändert das "Teilarray ersetzen" das Ausgangsarray nicht?

Viele Grüße,

Stefan

[attachment=21699][attachment=21700]Lv85_img[attachment=21701]
Dein Array "Ausgangsarray" ist doch leer. Du kannst nicht bei einem leeren Array nicht vorhandene Elemente ersetzen. Vorher also initialisieren.

Lv85_img[attachment=21703]
Wow, vielen Dank für die sehr schnelle und hilfreiche Antwort.

Ich hatte mir so was schon gedacht, aber das wieder verworfen, denn:

- dann habe ich ja erst mal ein "0"-Array im Cluster - gut, damit könnte ich bei der späteren Auswertung umgehen, bzw. es in einem nachfolgenden Schritt wieder löschen
- da hätte ich ja schon ganz gerne 'ne Fehlermeldung gehabtSad
- Bei der späteren Auswertung mit einem 3D-Array wollte ich nicht so viel Speicher belegen (obwohl das wahrscheinlich kein Problem ist).

Zur Zeit habe ich noch ein paar kleine Problemchen mit dem richtigen Index - wenn das Demo-Programm fertig ist, stelle ich es der Vollständigkeit halber mal hier rein.
Warum eigentlich das 2D-Array? Geht es nicht auch so?

Lv85_img[attachment=21709]

[attachment=21710]
Ahh, nee ja - hmm

- ich habe leider nur LabVIEW 8.5.1 (obwohl wir hier eine upgrade-Berechtigung haben ...), aber ich habe einfach mal den Screenshot abgepinnt.

Die Indizierung über die Schleife ist ja ganz schön Pfiffig - da wäre ich nie drauf gekommen.

Da ist mir dann aufgefallen, daß ich die Aufgabenstellung zwar erklärt, aber leider nicht ansatzweise im Programm umgesetzt hatte (weil ich die für die Frage im Forum vereinfacht hatte, um dem eigentlichen Problem auf die Schliche zu kommen). Im Cluster MUSS ein 2D-Array stehen. Es handelt sich ja immer um Wertepaare. OK, man könnte (da die Reihenfolge immer gleich ist) das Wertepaar auch aus einem 1D-Array ersehen - das würde aber keinen Vorteil bringen.

Was ich im Programm vergessen habe ist, daß die Bauteilnummer (also die erste Spalte im Eingangsarray) als Index für das Ausgangsarray verwendet werden soll. Damit finde ich dann Bauteil "1" immer an Index 1 meines Ausgangsarrays.

Mittlerweile bin ich schon ein wenig weiter. Es wird nun die erste Spalte des Eingangsarrays nach der größten Zahl durchsucht (leider habe ich auch in der Suche im Forum nichts besseres gefunden, um ein String-Array in ein Zahl-Array umzuwandeln). Dann wird das Ausgangsarray initialisiert und anschließend mit Werten (Wertepaaren) gefüllt.

So wie ich das jetzt sehe (muß ich aber noch testen und dann auf mein eigentliches Problem übertragen) ist das Problem jetzt gelöst.

Vielen Dank - ich hatte gestern lange damit rumgemacht - ohne Erfolg.

Lv85_img[attachment=21712][attachment=21713]
Ok, dann vllt so:

[attachment=21714]
Lv85_img[attachment=21715]
Ich bin tief beeindruckt (kein Witz!).

Das funktioniert und ist zudem noch sehr schlank (und wahrscheinlich auch schnell).

Mich ärgert gerade, daß ich bei "Dezimal-String nach Zahl" den falschen Anschluß erwischt hatte, und demnach auf die Idee kam, ich müsse mir die Konvertierung selbst schreiben - na gut, immerhin hat's auf Anhieb funktionert. Jetzt habe ich mittlerweile ein eigenes Sub-VI dafür geschrieben und kann es gerade mal wegschmeissen.

Diese Indizierungen in Schleifen sind immer eine Nummer zu hoch für mich - da muß ich wohl noch mal ein wenig experimentieren.

So, jetzt mache ich mich dran, das für meine höhere Komplexität umzusetzen - im Realfall ist das Ausgangsarray ein 3D statt 1D-Array und dementsprechend gibt es zu Bauteil auch noch Index Messbrücke und Einzelwiderstand. Aber mit Deiner Hilfe werde ich das jetzt sicher gut hinbekommen.

Vielen, vielen Dank nochmals,

Stefan
Referenz-URLs