INFO: Dieses Forum nutzt Cookies...
Cookies sind für den Betrieb des Forums unverzichtbar. Mit der Nutzung des Forums erklärst Du dich damit einverstanden, dass wir Cookies verwenden.

Es wird in jedem Fall ein Cookie gesetzt um diesen Hinweis nicht mehr zu erhalten. Desweiteren setzen wir Google Adsense und Google Analytics ein.


Antwort schreiben 

einzelnes Element eines leer initialisierten 4-dimensionalen Arrays ändern/einfügen



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!

04.07.2012, 18:01
Beitrag #1

Graf_Dracula Offline
LVF-Neueinsteiger


Beiträge: 5
Registriert seit: Oct 2007

7.1
2005
kA


Deutschland
einzelnes Element eines leer initialisierten 4-dimensionalen Arrays ändern/einfügen
OK, die Überschrift hört sich hoffentlich schlimmer an, als es eigentlich ist ...

Ich möchte die Menüstruktur eines Reglers nachbilden, wobei eine komplette Anzeige-Ebene aus verschiedenen Variablen besteht. Eine Oberfläche/Anzeige ist daher ein Cluster aus verschiedenen Elementen. In jeder einzelnen Ebene/Oberfläche/Anzeige kann jedes einzelne Element wieder entweder auf eine weitere Ebene verweisen, oder ein bestimmter Wert sein ... insgesamt für mich also ein 4-dimensionales Array aus Clustern.

Hier mal ein hoffentlich halbwegs verständliches Bildchen:
   

Aus einer entsprechenden *.csv-Datei parse ich die ganzen Werte heraus, die in das jeweilige Cluster eingetragen werden, was soweit auch schon perfekt klappt. In der csv-Datei steht unter anderem auch drin, in welche der jeweils 4 Dimensionen es eingetragen werden muss. Nur wie verklickere ich das Labview??? Mit dem Punkt "In Array einfügen" geht das nämlich gar nicht:

http://zone.ni.com/reference/de-XX/help/...nto_array/ schrieb:Das Array, das mit n- oder n-1-dimens. Array verbunden wird, muss genauso viele Dimensionen haben wie das mit n-dimensionales Array verbundene Array oder eine Dimension weniger. So kann in ein 2D-Array beispielsweise kein einzelnes Element eingefügt werden oder in ein 3D-Array keine einzelne Reihe (ein 1D-Array). Dagegen kann jedoch ein 2D-Array mit einer einzelnen Reihe in ein 3D-Array eingefügt werden. Das resultierende Array wird dann automatisch aufgefüllt.

Wie folgt wäre mein Gedanke gewesen, wie es rein logisch funktionieren müsste/sollte ein Element an die Position 0:1:2:1 in diesem mehrdimensionalen Array zu schreiben, Labview warum auch immer aber nicht zuläßt.

   

Wie also kann ich ein einzelnes Element (Hier ist ein Element eben ein Cluster) schreiben, ohne die Dimensionen nacheinander voneinander zu trennen und danach wieder zusammen zu basteln?
Alle Beiträge dieses Benutzers finden
Diese Nachricht in einer Antwort zitieren to top
Anzeige
04.07.2012, 19:32
Beitrag #2

jg Offline
CLA & CLED
LVF-Team

Beiträge: 15.864
Registriert seit: Jun 2005

20xx / 8.x
1999
EN

Franken...
Deutschland
RE: einzelnes Element eines leer initialisierten 4-dimensionalen Arrays ändern/einfügen
1) IMHO ist so ein Aufbau eigentlich eine Baumstruktur und lässt sich auch so darstellen.

2) Wie die Beschreibung der Insert-Array-Funktion erklärt, es geht halt nicht, darüber in ein 4D-Array nur ein Element einzusetzen.

3) Du baust dir ein 5D-Array zusammen! (Start mit 1D-Array + 4x Build-Array)

4) Mögliche Lösung, wenn du unbedingt bei 4D-Array bleiben willst: Ermittle zu Beginn die maximale Größe pro Dimension, erstelle dir ein entsprechendes Array mit Initialize Array und arbeite dann mit Replace Array Subset.

Gruß, Jens

Wer die erhabene Weisheit der Mathematik tadelt, nährt sich von Verwirrung. (Leonardo da Vinci)

!! BITTE !! stellt mir keine Fragen über PM, dafür ist das Forum da - andere haben vielleicht auch Interesse an der Antwort!

Einführende Links zu LabVIEW, s. GerdWs Signatur.
Alle Beiträge dieses Benutzers finden
Diese Nachricht in einer Antwort zitieren to top
04.07.2012, 20:19 (Dieser Beitrag wurde zuletzt bearbeitet: 04.07.2012 20:27 von GerdW.)
Beitrag #3

GerdW Offline
______________
LVF-Team

Beiträge: 17.398
Registriert seit: May 2009

LV2021
1995
DE_EN

10×××
Deutschland
RE: einzelnes Element eines leer initialisierten 4-dimensionalen Arrays ändern/einfügen
Hallo,

abgesehen von der eigentlich zu verwendenden Baumstruktur:
Ist dir das Grundkonzept von verlinkten Listen/Feldern ein Begriff? (War sehr viel früher ein Grundkonzept bei der Datenverwaltung in PASCAL...)

- Du erweiterst deinen Cluster um einen Eintrag für einen Vorgänger und einen Nachfolger.
- Du kannst alle Cluster in einem 1D-Array verwalten.
- Um von einem Element zu einem nächsten zu kommen, hangelst du dich durch die "Verlinkungen"...

Weiterer Punkt:
Wie groß willst du dein 4D-Array machen? In LabVIEW ist ein Array immer "rechteckig", d.h. in alle Dimensionen immer gleich viele Elemente. Wenn dein "Baum" ungleichmäig lang ist, hast du (sehr) viele leere Elemente in deiner 4D-Struktur - die aber trotzdem Speicher belegen...

Weiterer Punkt:
Viele Einsteiger haben Probleme mit der korrekten Verwendung von Array-Funktionen...
Du willst eigentlich gar kein Element in ein 4D-Array "einfügen" (was das Verschieben anderer Elemente zur Folge hätte)!
Was du eigentlich willst, ist, in einem bestehenden Array ein Element an einer bestimmten Stelle einzutragen - was man mit ReplaceArraySubset erledigt. Nur muss man dafür vorher schon ein entsprechend großes Array angelegt haben - was man wiederum mit InitArray erledigt!
Andererseits hast du aber schon 7 Jahre (!) LabVIEW-Erfahrung und solltest dies eigentlich wissen...

Alle Beiträge dieses Benutzers finden
Diese Nachricht in einer Antwort zitieren to top
04.07.2012, 21:15
Beitrag #4

Graf_Dracula Offline
LVF-Neueinsteiger


Beiträge: 5
Registriert seit: Oct 2007

7.1
2005
kA


Deutschland
RE: einzelnes Element eines leer initialisierten 4-dimensionalen Arrays ändern/einfügen
(04.07.2012 20:19 )GerdW schrieb:  Andererseits hast du aber schon 7 Jahre (!) LabVIEW-Erfahrung und solltest dies eigentlich wissen...

Vor 7 Jahren hab ich mit Labview Programmieren angefangen - richtig. Leider war das bei meinen Arbeitgebern in letzter Zeit eher nur Nebensache, wodurch ich mich keinesfalls als einen 7-jährigen Profi bezeichnen würde, sondern im Moment eher einfach nur als nicht mehr ganz blutigen Anfänger.
Alle Beiträge dieses Benutzers finden
Diese Nachricht in einer Antwort zitieren to top
10.07.2012, 16:10
Beitrag #5

j.fischer Offline
LVF-Neueinsteiger


Beiträge: 1
Registriert seit: Feb 2012

2010
2005
DE



RE: einzelnes Element eines leer initialisierten 4-dimensionalen Arrays ändern/einfügen
So ... ich muss jetzt nochmal nachfragen, wie genau ich das denn am besten realisieren kann ...

Punkt 1, ich möchte die komplette Menüstruktur in einer Excel-Liste bearbeiten können, da sich die Struktur relativ schnell und häufig ändert. Diese Excel-Daten in eine *.csv-Datei konvertiert einlesen klappt schon, allerdings eben mit der ungünstigen mehrdimensionalen Array-Lösung.

Punkt 2, je Menüeben können aktuell bis zu 24 Menüpunkte existieren (später vllt. auch mal noch mehr) und jeder dieser Menüpunkte kann entweder in eine ebenso große tiefere Ebene verzweigen oder ist ein änderbarer Menüpunkt

Wie ich das mittels einer Baumstruktur realisieren soll, entzieht sich mir völlig, da ich nicht wüßte, wie ich beim parsen aus der csv-Datei Zeiger auf die entsprechenden Unterebenen anlegen soll ...

Wenn jemand ne Erklärung hat, Bitte am besten irgendwie grafisch, damit ich das auch verstehe und mir vorstellen kann :-)
Alle Beiträge dieses Benutzers finden
Diese Nachricht in einer Antwort zitieren to top
10.07.2012, 16:30 (Dieser Beitrag wurde zuletzt bearbeitet: 10.07.2012 17:31 von jg.)
Beitrag #6

jg Offline
CLA & CLED
LVF-Team

Beiträge: 15.864
Registriert seit: Jun 2005

20xx / 8.x
1999
EN

Franken...
Deutschland
RE: einzelnes Element eines leer initialisierten 4-dimensionalen Arrays ändern/einfügen
Offtopic2
Herr Fischer = Graf Dracula? Ja oder Nein? Sehr verwirrend.

Falls ja, wieso ein zweiter Account?

Gruß, Jens


EDIT:
Andere Frage: Wie sieht eigentlich deine csv-Datei aus? Die ist wohl kaum 4-dimensional!

Wer die erhabene Weisheit der Mathematik tadelt, nährt sich von Verwirrung. (Leonardo da Vinci)

!! BITTE !! stellt mir keine Fragen über PM, dafür ist das Forum da - andere haben vielleicht auch Interesse an der Antwort!

Einführende Links zu LabVIEW, s. GerdWs Signatur.
Alle Beiträge dieses Benutzers finden
Diese Nachricht in einer Antwort zitieren to top
10.07.2012, 20:13
Beitrag #7

Graf_Dracula Offline
LVF-Neueinsteiger


Beiträge: 5
Registriert seit: Oct 2007

7.1
2005
kA


Deutschland
RE: einzelnes Element eines leer initialisierten 4-dimensionalen Arrays ändern/einfügen
(10.07.2012 16:30 )jg schrieb:  Herr Fischer = Graf Dracula? Ja oder Nein? Sehr verwirrend.

Falls ja, wieso ein zweiter Account?
Weil ich notorisch vergesslich bin, durch AG-Wechsel, RechnerCrashUndAlleLoginDatenWech, NochmalNeuAnmelden ... usw. jetzt einfach offensichtlich 2 Accs habe und auf einem der Rechner doch noch mein alter Login automatisch abgespeichert war ...

(10.07.2012 16:30 )jg schrieb:  Andere Frage: Wie sieht eigentlich deine csv-Datei aus? Die ist wohl kaum 4-dimensional!
Tss ... der hat ja gar keine Ahnung von Excel ... klar gehen da 4-dimensionale Daten. Nee - geht natürlich nicht, aber man kann die Daten dort so abspeichern oder demenstprechend danach einlesen, dass es was 4, 7, x-dimensionales ergibt. Das Eintragen iss halt nur bisschen tricky, iss hier aber auch egal, weil ich will ja weg davon, denn wie ich inzwischen gemerkt habe, mault Labview ab 7 Dimensionen auch rum, weil Ihm der Speicher ned mehr rechen würde, dabei sind doch in einer einzelnen Zelle (Cluster) nur 18 Strings und 6 Rings ... 7^7 = 823543 ... in den Strings vorinitialisiert standen glaub je 10 Zeichen drin ... ja OK, kommt schon bisserl was zusammen ... vor allem jede Menge leere nie benutzte Zellen.

Also .. wie könnte meine Excel-Tabelle aussehen, damit ich das Menü daraus variabel einlesen kann und wie setze ich eine Baumstruktur in Labview um --- gibts da nen Tutorial oder sowas, hab nämlich noch nix gefunden.
Alle Beiträge dieses Benutzers finden
Diese Nachricht in einer Antwort zitieren to top
10.07.2012, 21:14
Beitrag #8

jg Offline
CLA & CLED
LVF-Team

Beiträge: 15.864
Registriert seit: Jun 2005

20xx / 8.x
1999
EN

Franken...
Deutschland
RE: einzelnes Element eines leer initialisierten 4-dimensionalen Arrays ändern/einfügen
Noch nicht selber eingesetzt, aber hier gibt es eine Baum-API:
http://lavag.org/files/file/27-tree-control-api/
In so eine Baumstruktur muss man sich selber reinfuchsen, das ist aber immer dasselbe. Auch die .NET-API macht für ein Tree-Control nichts anderes als LabVIEW (Parent, Child, etc. pp.). Es gibt ein paar Beispiele im NI Example Finder, die sind IMHO ganz hilfreich.

Gruß, Jens

P.S.: Soweit ich bisher verstanden habe, ist deine Vorlage also 1 csv-Datei, entspricht also einem 2D-Array of Strings. Jetzt musst du "nur noch" die Logik deiner 2D-Darstellung entsprechend nachprogrammieren, und schon kannst du deine Menüstruktur auch als 2D-Array in LabVIEW speichern.

Wer die erhabene Weisheit der Mathematik tadelt, nährt sich von Verwirrung. (Leonardo da Vinci)

!! BITTE !! stellt mir keine Fragen über PM, dafür ist das Forum da - andere haben vielleicht auch Interesse an der Antwort!

Einführende Links zu LabVIEW, s. GerdWs Signatur.
Alle Beiträge dieses Benutzers finden
Diese Nachricht in einer Antwort zitieren to top
Antwort schreiben 


Möglicherweise verwandte Themen...
Themen Verfasser Antworten Views Letzter Beitrag
  Rahmen oder Kasten eines XY-Graphen ändern bachatero18 2 3.124 04.11.2020 20:22
Letzter Beitrag: bachatero18
Sad Texthintergrund von Elementen eines Arrays dynamisch ändern hajos118 3 4.374 04.05.2017 10:37
Letzter Beitrag: GerdW
  Fehler 1 -> Element einfügen in Queue meta_ir 14 8.087 31.01.2017 10:55
Letzter Beitrag: GerdW
  Variable Größe eines Arrays mit VISA-Adressen jusaca 4 3.944 10.02.2016 10:13
Letzter Beitrag: jusaca
  Farbe vom Rahmen eines Bools ändern Radinic 3 3.853 23.02.2015 14:28
Letzter Beitrag: jg
  Auswahl eines Arrays anhand des Wertes eines zweiten Arrays treffen alan 2 4.055 19.02.2015 16:12
Letzter Beitrag: alan

Gehe zu: