Hallo mrstrom,
Lucki hat den einen letzten Schritt von den Einzelwerten zum Cluster doch schon gezeigt, einfach mal Beitrag #9 aufmerksam anschauen...
- Die vielen Trennzeichen haben nur geringen Einfluß auf die Performance, aber großen auf die Dateilänge.
- Du bekommst deine Datei auch kleiner, wenn du die ganzen Spaces, wie oben beschrieben, ersetzt.
- PropertyNodes sind wahre Performancekiller, insbesondere bei Einsatz in Schleifen!
Zitat:Woher weißt du dass die Anzahl der Werte im Header steht?
Was sagt denn der Parameter "Anzahl Spektren" im Header sonst aus?
Zitat:Wie finde ich heraus welches VI wie auf den Speicher zugreift und ggf. Kopien der Daten anlegt und so weiter.
Siehe Beitrag #2: Menü -> Tools -> Profile
Ja aber in der Lösung von Lucky wird das Bundle VI benutzt so dass es nicht mehr so flexibel ist. Mein Betreuer möchte jeder Zeit den MusterCluster beliebig erweitern können ohne alle Bundle VIs anpassen zu müssen.
Ist dies in meinem Falle überhaupt möglich? Oder geht das einfach auf Kosten der Performance so wie es in meinem ersten Versuch passiert?
Zu der Anzahl der Spektren:
Es ist leider keine Fortlaufende Nummer, es wird nicht immer um eins erhöht sondern manchmal um zwei oder drei. Dieser Parameter diente uns lediglich zum überprüfen wieviele Spektren unser µc aufnimmt und wieviele davon wirklich über den BUS und andere Datenleitungen dann wirklich im Rechner bei LabView ankommen. Und da dabei manche Datensätze verloren gehen, was in unserem nicht weiterschlimm ist wenn jeder 2 oder dritte Datensatz auch ankommen.
Hallo mrstrom,
Zitat:Mein Betreuer möchte jeder Zeit den MusterCluster beliebig erweitern können
Was heißt "zu jeder Zeit"? Zur Laufzeit kannst du eine Cluster-Definition nicht ändern...
Was du aber machen kannst:
Erstelle einen Cluster aus: Array für skalare Werte, Array für Kanalnamen der skalaren Werte und Array für Spektrumswerte. Dann kannst du jederzeit und einfach zu jedem (skalaren) Wert einen Namen mit abspeichern...
' schrieb:Das Format habe ich mir ausgedacht, und sehe auch langsam ein das es nicht gerade eine gute Wahl war. Aber haben die vielen Trennzeichen den einen großen Einfluss auf die Performance? Es müsste doch eigentlich egal sein ob man auf einen Zeilenumbruch schaut oder auf ein Zeilenumbruch?
Da bin ich aber beruhigt, ich hatte schon befürchtet, ein durchgeknallter Professor hat sich diesen Quatsch ausgedacht und ich sah schon die Qualität der Lehre am Boden liegen. Und mit Deiner Frage hast Du unfreiwillig recht. Egal ist aber nicht, ob man Zeilenumbrüche nimmt oder diese durch beliebig ausgedachte Zeichen ersetzt.
Grund ist: Es gibt mehrer VIs zur Textverarbeitung, die auf Zeilenumbrüchen basieren. Das Trennzeichen zwischen zwei Daten in einer Zeile (meist TAB) läßt sich ändern, der Zeilenumbruch jedoch nicht. Fehlender Zeilenumbruch in Textdaten hat eine viel umständlichere Textverarbeitung zur Folge, wie Du am eigenen Bespiel erfahren konntest.
Beispiele solcher VIs: Zeilenweises Einlesen einer Datei, Aus Tabellenkalkulationdatei lesen.
Die größte Unsinn kommt übrigens ganz am Ende: Das Zeichen "%" für das Ende der gesamten Datei kommt nicht nach dem Zeichen "?" für das Ende des letzten Datensatzes, sondern vorher.
Anmerkung zur Funktion "Array to Cluster" : die hört sich so dynamisch an, ist sie aber nicht. Man muß dort gnadenlos mit der rechten Maustaste die Anzahl der Clusterelemente benennen - und diese ist während der Laufzeit auch nicht änderbar.
Die einzige Möglichkeit, einen Cluster anzupassen, ist, genügend viele Elemente drin zu haben, von denen dann nicht immer alle mit sinnvollen Werten belegt sind. Oder aber einige Elemente sind Arrays (siehe Hinweis GerdW) oder Texte verschiedener Länge, mit dementsprechend unterschiedlicher Menge von Information. Hier sollte Dein Betreuer mal nachbessern, anstatt Unmögliches zu verlangen.
..Und mit einer normal formatierten Textdatei
[
attachment=31290]
schrumpft nicht nur die Textdatei selbst um die Hälfte, sondern zum Programm gehört auch nicht mehr viel dazu:
[
attachment=31292]