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 

Arrays als array of Referenzen.vi



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!

21.01.2009, 14:51 (Dieser Beitrag wurde zuletzt bearbeitet: 21.01.2009 14:52 von gottfried.)
Beitrag #1

gottfried Offline
LVF-Guru
*****


Beiträge: 1.735
Registriert seit: Mar 2007

2019
2004
EN

20**
Oesterreich
Arrays als array of Referenzen.vi
Hallo,

keine Funktionsfrage sonder eine Stilfrage - geht das auch schöner?

Danke

Gottfried

V8.6

PS.: scön wäre zumindest wenn man die Arrays am FP nicht bräuchte - invisible? ... na ja


Angehängte Datei(en)
Sonstige .vi  Arrays_als_array_of_Referenzen.vi (Größe: 15,88 KB / Downloads: 214)

mein wöchentlicher (eigenwilliger) Beitrag zur Innovation
http://innovation1.wordpress.com/
Webseite des Benutzers besuchen Alle Beiträge dieses Benutzers finden
Diese Nachricht in einer Antwort zitieren to top
22.01.2009, 05:46
Beitrag #2

rasta Offline
LVF-Gelegenheitsschreiber
**


Beiträge: 245
Registriert seit: Oct 2006

LabVIEW 2009-2017
2006
EN

53909
Deutschland
Arrays als array of Referenzen.vi
Hallo Gottfried,
ich hoffe ich hab Dich richtig verstanden.
Im Anhang mein Lv85_img Vorschlag.

Gruß
Ralf

PS: Testen konnte ich es nicht, bitte um Rückmeldung falls dir ein Fehler auffällt.


Angehängte Datei(en)
Sonstige .vi  Arrays_als_array_of_Referenzen_RS.vi (Größe: 35,47 KB / Downloads: 230)
Alle Beiträge dieses Benutzers finden
Diese Nachricht in einer Antwort zitieren to top
22.01.2009, 10:47 (Dieser Beitrag wurde zuletzt bearbeitet: 22.01.2009 10:48 von gottfried.)
Beitrag #3

gottfried Offline
LVF-Guru
*****


Beiträge: 1.735
Registriert seit: Mar 2007

2019
2004
EN

20**
Oesterreich
Arrays als array of Referenzen.vi
Danke,

aber (leider) das hat einen grossen Hacken: die Tabellen sind sehr unterschiedlich z.B.: 100x30 aber auch 300000x150, wenn ich das in ein übergeordnetes Array packe sind alle sub-Arrays so gross wie das Größte - oder?

Stimmt - oder nicht?

Goittfried

PS.: bin mir nicht sicher - muss es ausprobieren - sonst wäre das ja wirklich genial

mein wöchentlicher (eigenwilliger) Beitrag zur Innovation
http://innovation1.wordpress.com/
Webseite des Benutzers besuchen Alle Beiträge dieses Benutzers finden
Diese Nachricht in einer Antwort zitieren to top
22.01.2009, 11:11
Beitrag #4

IchSelbst Offline
LVF-Guru
*****


Beiträge: 3.697
Registriert seit: Feb 2005

11, 14, 15, 17, 18
-
DE

97437
Deutschland
Arrays als array of Referenzen.vi
' schrieb:aber (leider) das hat einen grossen Hacken: die Tabellen sind sehr unterschiedlich z.B.: 100x30 aber auch 300000x150, wenn ich das in ein übergeordnetes Array packe sind alle sub-Arrays so gross wie das Größte - oder?
Stimmt - oder nicht?
Stimmt. In LV haben alle Indices die selbe Größe. Daher gilt das größe SubArray für alle.

Abhilfe: SubArrays in Cluster legen und Array of Cluster of Array machen. Dann ist der Index vom Typ Cluster, nicht mehr vom Typ Array.

Jeder, der zur wahren Erkenntnis hindurchdringen will, muss den Berg Schwierigkeit alleine erklimmen (Helen Keller).
Alle Beiträge dieses Benutzers finden
Diese Nachricht in einer Antwort zitieren to top
24.01.2009, 03:56 (Dieser Beitrag wurde zuletzt bearbeitet: 24.01.2009 05:25 von rasta.)
Beitrag #5

rasta Offline
LVF-Gelegenheitsschreiber
**


Beiträge: 245
Registriert seit: Oct 2006

LabVIEW 2009-2017
2006
EN

53909
Deutschland
Arrays als array of Referenzen.vi
' schrieb:Stimmt. In LV haben alle Indices die selbe Größe. Daher gilt das größe SubArray für alle.

Abhilfe: SubArrays in Cluster legen und Array of Cluster of Array machen. Dann ist der Index vom Typ Cluster, nicht mehr vom Typ Array.

Hallo,
IchSelbst, kannst du das bitte mal in das Beispiel einbauen ?


@Gottfried
300000x150 bekomme ich auf meinem Rechner noch nichteinmal vorinitialisiert (Not enough Memory) Hmm

Gruß
Ralf
Alle Beiträge dieses Benutzers finden
Diese Nachricht in einer Antwort zitieren to top
24.01.2009, 10:49
Beitrag #6

IchSelbst Offline
LVF-Guru
*****


Beiträge: 3.697
Registriert seit: Feb 2005

11, 14, 15, 17, 18
-
DE

97437
Deutschland
Arrays als array of Referenzen.vi
' schrieb:IchSelbst, kannst du das bitte mal in das Beispiel einbauen ?
Schau mer mal.

Zitat:300000x150 bekomme ich auf meinem Rechner noch nichteinmal vorinitialisiert (Not enough Memory) Hmm
Macht immerhin 360MB (= 300.000 * 150 * 8) pro Array. Irgendwo hat auch ein Speichermanager Grenzen. Und ob Auslagern eine Alternative für ein Array als solches ist, wage ich zu bezweifeln.

Jeder, der zur wahren Erkenntnis hindurchdringen will, muss den Berg Schwierigkeit alleine erklimmen (Helen Keller).
Alle Beiträge dieses Benutzers finden
Diese Nachricht in einer Antwort zitieren to top
24.01.2009, 12:25
Beitrag #7

IchSelbst Offline
LVF-Guru
*****


Beiträge: 3.697
Registriert seit: Feb 2005

11, 14, 15, 17, 18
-
DE

97437
Deutschland
Arrays als array of Referenzen.vi
' schrieb:kannst du das bitte mal in das Beispiel einbauen ?
Dein Beispiel ist schon so wie ich gemeint habe.

Hier nochmals ein Erklärungsversuch:

Ein 3D-Array ARRAY[LenA,LenX,LenY] of DBL (ein solches war ich der Meinung, hat gottfreid ganz am Anfang verwendet) ist so gesehen ein Array of Array of Array, also ARRAY[LenA]ARRAY[LenX]ARRAY[LenY] of DBL (oder Array[LenA]Array[LenX,LenY] of DBL). IN LV ist die Größe eines jeden Teilarrays ARRAY[IndexA] immer gleich groß (hier: LenX*LenY*LenArrTyp). Das heißt also alle ARRAY[IndexX,IndexY] sind gleich groß/lang. (Beachte: dieses Verfahren kann kaskadiert werden auf m-dimensionale Arrays).
Letztendlich gilt die Größenkonstanz auch für ein 1D-Array. Das klingt zwar trivial, ist aber so. Die Größe ist die Größe des Basistyps, z.B. DBL also 8 Byte.

Ist der Basistyp ein CLUSTER, so ist die Basislänge eines m-dimensionalen ARRAY of CLUSTER die Größe von CLUSTER. Cluster sind komplexte Datentypen, die selbst wieder unterschiedliche Datentypen "sammeln" können. Cluster haben eine besondere Datenstruktur, z.B. wenn er einen String oder ein Array enthält. Die Daten des Arrays selbst stehen nämlich nicht direkt im Cluster. Im Cluster selbst steht ein Pointer auf einen Datenbereich, der die Daten tatsächlich enthält. Dadurch ist es nun möglich, dass jedes dieser ARRAY[X].CLUSTERARRAY eine eigene Größe haben kann.
Überlege folgendes: Gesetzt der Fall, die Daten von String und Array sind im Cluster abgespeichert. Ganz am Anfang des Clusters steht ein String und danach viele, viele sonstige Daten. Jetzt soll der String am Anfang doppelt so lang gemacht werden. Das würde nun bedeuten, dass ALLE DATEN im Cluster verschoben werden müssten. Das ist aber ein Aufwand (MemoryManager!), der bis ins unbezahlbare ausarten kann. Die Lösung über einen Pointer ist da ganz einfach: Neuen Speicher für den String allozieren, String kopieren und erweitern und neuen Pointer speichern. Analoges gilt für das Array.

Hier nochmals ein Bild und ein VI mit Strings zum Kucken für die Länge bei 2DArr.

Lv80_img


Angehängte Datei(en) Thumbnail(s)
   

Sonstige .vi  Muster.vi (Größe: 8,87 KB / Downloads: 165)

Jeder, der zur wahren Erkenntnis hindurchdringen will, muss den Berg Schwierigkeit alleine erklimmen (Helen Keller).
Alle Beiträge dieses Benutzers finden
Diese Nachricht in einer Antwort zitieren to top
24.01.2009, 13:19
Beitrag #8

rasta Offline
LVF-Gelegenheitsschreiber
**


Beiträge: 245
Registriert seit: Oct 2006

LabVIEW 2009-2017
2006
EN

53909
Deutschland
Arrays als array of Referenzen.vi
Hallo IchSelbst,
erstmal vielen Dank für den ausführlichen Erklärunsversuch.

So ganz verstanden habe ich es noch nicht, aber das wird schon.Wink

Für mein Beispiel ist mir noch eine Verbesserung eingefallen und zwar beim einlesen des 2-D-Arrays die daraus resultierende Längen (Row, Column) mit in den Cluster aufzunehmen und beim späteren Zugriff mit Array Subset die Originalgröße wieder herzustellen.

Gruß
Ralf


Angehängte Datei(en) Thumbnail(s)
   
Alle Beiträge dieses Benutzers finden
Diese Nachricht in einer Antwort zitieren to top
24.01.2009, 14:47
Beitrag #9

IchSelbst Offline
LVF-Guru
*****


Beiträge: 3.697
Registriert seit: Feb 2005

11, 14, 15, 17, 18
-
DE

97437
Deutschland
Arrays als array of Referenzen.vi
' schrieb:Für mein Beispiel ist mir noch eine Verbesserung eingefallen und zwar beim einlesen des 2-D-Arrays die daraus resultierende Längen (Row, Column) mit in den Cluster aufzunehmen und beim späteren Zugriff mit Array Subset die Originalgröße wieder herzustellen.
Dieses Verfahren an sich ist dann vorteilhaft, wenn genau das Problem mit den gleich langen Teilarrays auftritt. Nur: bei deiner Datenstruktur mit dem Cluster tritt dieses Problem nicht auf. In deinem aktuellen Beispiel ist dieses Verfahren also umsonst.

Schau nach, die Werte von Row und Col sind mit den Längen der Dimensionen des Teilarrays nach dem ArraySubset identisch.

Jeder, der zur wahren Erkenntnis hindurchdringen will, muss den Berg Schwierigkeit alleine erklimmen (Helen Keller).
Alle Beiträge dieses Benutzers finden
Diese Nachricht in einer Antwort zitieren to top
24.01.2009, 15:24
Beitrag #10

rasta Offline
LVF-Gelegenheitsschreiber
**


Beiträge: 245
Registriert seit: Oct 2006

LabVIEW 2009-2017
2006
EN

53909
Deutschland
Arrays als array of Referenzen.vi
' schrieb:Dieses Verfahren an sich ist dann vorteilhaft, wenn genau das Problem mit den gleich langen Teilarrays auftritt. Nur: bei deiner Datenstruktur mit dem Cluster tritt dieses Problem nicht auf. In deinem aktuellen Beispiel ist dieses Verfahren also umsonst.

Schau nach, die Werte von Row und Col sind mit den Längen der Dimensionen des Teilarrays nach dem ArraySubset identisch.

Hi,
wie ich schon erwähnte "So ganz verstanden habe ich es noch nicht, aber das wird schon". Lol
Das kommt davon dass ich ohne echte Werte einfach so drauf los programmiert habe, wird nicht wieder passieren.

Mit den jetzt simulierten 2 Arrays ist mir noch ein kleiner Fehler aufgefallen Siehe Screenshot (Index For muss für die "Endlänge" Array Subset mit
1 inkrementiert werden.

So dann nochmals vielen Dank und Gruß
Ralf


Angehängte Datei(en) Thumbnail(s)
       
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
  Extrem langsamer Variablen Zugriff über Referenzen hajos118 12 5.611 01.08.2022 17:20
Letzter Beitrag: BNT
  Muss man Referenzen von controls überhaupt schließen? dimitri84 4 4.237 21.04.2022 11:57
Letzter Beitrag: dimitri84
  Wann schließe ich (ActiveX, Excel) Referenzen? + wie Cluster to Array? TpunktN 9 9.918 28.01.2020 14:14
Letzter Beitrag: TpunktN
  Referenzen in mehreren Bibliotheken aktualisieren seuk 3 4.012 12.09.2019 09:10
Letzter Beitrag: IchSelbst
  Cluster mit Referenzen auf FP-Elemente Oli_N 8 9.089 15.02.2017 11:19
Letzter Beitrag: Oli_N
  Frage zu Referenzen maxxillian 1 4.085 21.10.2016 08:04
Letzter Beitrag: GerdW

Gehe zu: