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 

Unflatten from String in C



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!

14.06.2008, 19:11
Beitrag #11

dalb Offline
LVF-Neueinsteiger


Beiträge: 7
Registriert seit: Jun 2008

7.1
-
de

74731
Deutschland
Unflatten from String in C
Das Problem ist, dass die Daten auf Messrechnern über LabVIEW aufgenommen werden und abgespeichert werden und dann irgendwann mit Matlab, das auf dem Server installiert ist, analysiert werden.
Alle Beiträge dieses Benutzers finden
Diese Nachricht in einer Antwort zitieren to top
Anzeige
14.06.2008, 19:23
Beitrag #12

dc6xs Offline
registered alien
****


Beiträge: 762
Registriert seit: Aug 2006

6.1,7.00
2006
kA

79106
Sonstige
Unflatten from String in C
' schrieb:Das Problem ist, dass die Daten auf Messrechnern über LabVIEW aufgenommen werden und abgespeichert werden und dann irgendwann mit Matlab, das auf dem Server installiert ist, analysiert werden.

Irgendwie stört mich das irgendwann gerade etwas..
Für solche Fälle beitet sich doch eine Datenbank auf dem Server, auf dem auch Matlab läuft an..
Also Daten per LV über SQL und Netzwerk an den DB-Server, der legts ab und Matlab kann sich die Daten dort dann holen.

Oder halt aufm LV-Rechner stündlich/täglich/wöchentlich eine neue Datei anlegen und die nach dem Speichern dann auf den Server übertragen.

BTW: Sowohl LV als auch Matlab können sehr gut mit CVS-Daten umgehen, also warum nicht auf ein einfaches Textfile ausweichen?

Aber hättest Du das gleich erzählt, dann hättest den ganzen Umweg über Unflatten from String fast sparen können..

Bitte Beachten:
Die obenstehenden Texteile können unter Umständen Sarkasmus und Ironie enthalten, für nicht erkannten Sarkasmus oder nicht erkannte Ironie wird keine Haftung übernommen.

N.B.:
"Multiple exclamation marks, " he went on, shaking his head, "are a sure sign of a deseased mind." - Terry Pratchett
Webseite des Benutzers besuchen Alle Beiträge dieses Benutzers finden
Diese Nachricht in einer Antwort zitieren to top
14.06.2008, 19:51
Beitrag #13

dalb Offline
LVF-Neueinsteiger


Beiträge: 7
Registriert seit: Jun 2008

7.1
-
de

74731
Deutschland
Unflatten from String in C
' schrieb:Irgendwie stört mich das irgendwann gerade etwas..
Für solche Fälle beitet sich doch eine Datenbank auf dem Server, auf dem auch Matlab läuft an..
Also Daten per LV über SQL und Netzwerk an den DB-Server, der legts ab und Matlab kann sich die Daten dort dann holen.

Oder halt aufm LV-Rechner stündlich/täglich/wöchentlich eine neue Datei anlegen und die nach dem Speichern dann auf den Server übertragen.

BTW: Sowohl LV als auch Matlab können sehr gut mit CVS-Daten umgehen, also warum nicht auf ein einfaches Textfile ausweichen?

Aber hättest Du das gleich erzählt, dann hättest den ganzen Umweg über Unflatten from String fast sparen können..

Es liegen leider schon viele Header Files in diesem Format vor. Die meisten Header liegen auch in einem schönen Format vor, ähnlich einer ini Datei, aber aus irgendwelchen Gründen muss der Header manchmal geflattet werden. Ich habe die LabVIEW Anwendung nicht gemacht. Ich habe jetzt nur diese Daten und soll diese in MAtlab analysieren.
Alle Beiträge dieses Benutzers finden
Diese Nachricht in einer Antwort zitieren to top
16.06.2008, 07:41 (Dieser Beitrag wurde zuletzt bearbeitet: 16.06.2008 08:48 von rolfk.)
Beitrag #14

rolfk Offline
LVF-Guru
*****


Beiträge: 2.302
Registriert seit: Jun 2007

alle seit 6.0
1992
EN

2901GG
Niederlande
Unflatten from String in C
' schrieb:Ich habe leider immer noch keine Ahnung wie ich vorgehen soll.

Die Daten bestehen immer aus einem String gefolgt von einem Value. Aber da die Strings und auch die Values wohl kaum die gleiche Länge haben und auch kein Trennzeichen eingefügt ist, weiß ich nicht wie ich entscheiden soll, wann ich was als String und wann als Value interpretieren soll. Den DAtentyp Value verstehe ich sowieso noch nicht so ganz. ISt da noch irgendwo versteckt welcher Datentyp das wirklcih ist?

So sehen meine Daten aus, die ich zu interpretieren habe: Start Position (µm)�*@P�3�6@A1x�6@A1y�6@A1z11End Position (µm)�4@P�3�6@A1x�6@A1y�6@A1z1B

LEtztendlich benötige ich die Daten in Matlab. ICh glaube der Umweg über C ist gar nicht nötig.

Also im Prinzip gilt was ich schon gesagt habe. Für Strings und Arrays fügt Flatten vor den Daten einen 32 bit int hinzu der angibt wieviele Elemente folgen. An sich recht einfach ausser dass Flatten default auch noch alles auf Big Endian standardisiert.

Was Du mit Value meinst ist mir nicht deutlich. Entweder steht dort ein Skalar (double, single, integer) und dann ist es sehr einfach, ein Array (auch nicht viel schwiereiger siehe open), oder eine Variant (und dann hast Du eigentlich Pech gehabt). Zwar liesse sich das Variant Format in einem Flattened String wohl auch noch herausfinden aber das ist einfach sinnlos viel Arbeit für nichts. Da würde ich noch einfacher ein kleines LabVIEW Tool schreiben das die Daten mit Unflatten wieder einliesst und sie anschliessend in ein CSV oder ähnliches Textformat übersetzt. Kannst Du von Matlab sicher als Command Line Tool ausführen.

Am Besten wäre halt schone eine richtige Datenbank gewesen aber das ist ja scheinbar leider guter Rat der zu spät kommt.

Rolf Kalbermatter

Rolf Kalbermatter
Technische Universität Delft, Dienst Elektronik und Mechanik
https://blog.kalbermatter.nl
Webseite des Benutzers besuchen Alle Beiträge dieses Benutzers finden
Diese Nachricht in einer Antwort zitieren to top
16.06.2008, 13:24
Beitrag #15

dalb Offline
LVF-Neueinsteiger


Beiträge: 7
Registriert seit: Jun 2008

7.1
-
de

74731
Deutschland
Unflatten from String in C
Wir fangen jetzt erst an Matlab zu verwenden und werden wohl langsam bei vielen Anwendungen zu Matlab wechseln.


Ich kann mein Problem weiter eingrenzen:

Die Dateien, die ich ich Matlab einlesen möchte werden über WriteKey (string) geschrieben. Nur die Values werden dabei geflattet. Die Values sind aber vorher Variant, wobei ich eigentlich nicht verstehe warum, da es sich eigentlich nur um Fließkommazahlen handelt soweit ich das überblicken kann.

Ich habe mir jetzt folgendens überlegt: Ich lese alles ein und durchsuche den String nach den einzelnen Keys. Dann caste ich ab der Stelle nach dem Key. Dazu muss ich allerdings wissen wieviele Byte das Value hat. Steht jetzt in den ersten 4 Byte die Länge? Steht noch etwas über den Datentyp?

Hier ein Ausschnitt aus so einer Datei:

FIFO Settings="16Ü14D@P82†@ñ10FIFOSettings.ctt2RP5ª@P712@9CBinning (ms) @61AExternal Trigger Condition14@6FStop Condition:10@AAStop Count1A@715Buffer Size (Photons)14@6ENo of Channels14@2FExt Latch DelayBMeasurementf@P5C@66Module14@2EADC Resolution12@2CDither Range14@2FCount Increment16@210Macro Time Clock3ADCh@P418@912SYNC ZC Level (mV)16@211SYNC Freq Divider16@911SYNC Holdoff (ns)18@913SYNC Threshold (mV)4SYNCn@P514@9ETAC Range (ns)E@28TAC Gain14@9ETAC Offset (%)16@911TAC Limit Low (%)18@912TAC Limit High (%)3TACf@P418@912CFD Limit Low (mV)18@913CFD Limit High (mV)16@911CFD ZC Level (mV)16@910CFD Holdoff (ns)3CFD19FIFO Settings (output)[0]2†@ñ10FIFOSettings.ctt2RP5ª@P712@9

Gruß
Alle Beiträge dieses Benutzers finden
Diese Nachricht in einer Antwort zitieren to top
Antwort schreiben 


Gehe zu: