LabVIEWForum.de - Array Problem (1D in 2D einfügen)

LabVIEWForum.de

Normale Version: Array Problem (1D in 2D einfügen)
Du siehst gerade eine vereinfachte Darstellung unserer Inhalte. Normale Ansicht mit richtiger Formatierung.
Guten Morgen,

es ist 8.38h und ich habe ein Problem Big Grin.

Ich habe wirklich schon einiges ausprobiert, komme aber einfach nicht weiter.

komplette Problem+Beschreibung:

Gegeben sind:
2x 2D Array.
Anhand eines "Keys" durchsuche ich das 1te Array.

Bei einem gefundenen Eintrag (Zeile a)
Wähle nächste mögliche Zeile aus 2te Array (Zeile b)

Füge in 1te Array (Zeile a + Zeile b) ein.
Lösche aus 1te Array die alte (Zeile a)
Lösche aus 2te Array (Zeile b)

Ziel: Ich möchte also 1te Array erweitern mit den Werten, die ich in der anderen Datei (Array2) habe.

Um sich das ganze noch einfacher vorzustellen könnte man annehmen, dass Array1 aus Produkdaten besteht und Array2 aus Messungen (aber nicht von allen Produkten, sondern nur immer den ersten zwei oder drei).



Fortschritt:
Ich habe es auch schonmal geschafft, ein langes 1D Array zu erstellen wo dann die neue Zeile (Zeile a+Zeile b) drin ist. Sobald ich aber versuche, dass in das alte Array1 einzufügen, wird es automatisch abgeschnitten in der Spaltenanzahl.
(hier ein Bild, wo ich ein 1D Array schon erstellt habe). Falls es eine komplett andere einfache Methode für 2x2D Arrays gibt, ohne diesen Umweg, wäre das natürlich noch besser.
[attachment=20359]

Danke euch.
p.S: Falls es von Interesse sein sollte, es handelt sich um CVS Dateien, die mit "ReadSpreadsheet" einlese.
Ich glaube ich habe das Problem gelöst.

Wenn man die Operation "Array erstellen" verwendet und dann dort die Option "Eingänge verknüpfen" aktiviert, wird das Ganze 1D Array eingefügt.

Das Löschen der Spalte habe ich mittels "Transponieren" und dann letzten Index löschen erreicht.
Das Löschen ist jedoch eher suboptimal, da ich ja bei einem riesigen Array wieder massiv Speicherverbrauch und CPU Auslastung habe. Falls also hier jemand eine effizente Methode hat...immer her damit.

Im Anhang meine bisherige Lösung.

Gruß
Lv86_img[attachment=20361]
Transponieren brauchst du hier nichts, kostet nur Speicher und CPU. Optimal ist es mM nach immer noch nicht, aber ich auch nicht genau, worauf du hinauswillst.

[attachment=20363]
Hab ich doch auch was gebastelt, auch wenn ich keine Ahnung von der Effizienz habe.Big Grin

[attachment=20364]
[attachment=20365]

Lv86_img[attachment=20367]

Spalten löschen kannst du auch mit Rechtsklick auf das Array:
[attachment=20366]


Gruß SeBa
' schrieb:(...) Sobald ich aber versuche, dass in das alte Array1 einzufügen, wird es automatisch abgeschnitten in der Spaltenanzahl.

Du initialisierst das Array1 mit einer bestimmten Anzahl Spalten (z.B. durch das Einlesen deiner csv Datei). Willst du jetzt mehr Spalten dranhängen, brauchst du ein größeres Array, also entweder ein Array0 mit ausreichend Spalten und Zeilen (vorher) initialisieren und dann deine Arrays dort zusammenführen oder dem Array1 entsprechend viele Spalten anfügen. Keine Ahnung wie genau, aber ich denke mal v.v. zu dem wie schrotti die Spalte gelöscht hat.


Gruß SeBa
' schrieb:Transponieren brauchst du hier nichts, kostet nur Speicher und CPU. Optimal ist es mM nach immer noch nicht, aber ich auch nicht genau, worauf du hinauswillst.
Widerspruch bei Transponieren kostet Speicher, wenn ich mich richtig erinnere.
Ich habe da mal was auf (ich meine) LAVA gelesen, LabVIEW ist beim Transponieren "schlau". Es wird nämlich intern gar nichts transponiert und kein neuer Speicher angelegt, sondern nur irgendwie die Indices vertauscht.

Gruß, Jens
Die Entwicklungsumgebung war da anderer Meinung und hat gesagt, dass dort Speicher zugewiesen wird.
Referenz-URLs