|
Autor |
cell2csv |
|
Markus_Sw
Wenig Aktiv  Dabei seit: 21.03.2015 Mitteilungen: 80
 | Themenstart: 2019-01-10
|
Hallo,
ich habe ein Messdaten "cell" mir in Octave erzeugt, welches aus 4 Spalten besteht. 2 Spalten sind normale Zahlenwerte, 1 Spalten besteht aus strings und eine beinhaltet ein Datumsformat, also .
Messdaten(Stationsname, Zeit,Datum,Messdaten).
Jede Spalten hat 50 Reihen.
Diese Messdatenfile möchte ich gerne speichern, wenn es geht als csv.
So einfach es klingt klappt es nicht. csvwrite funktioniert bei einem cell nicht.
Hat jemand eine Lösung parat?
Viele Grüße
Markus
|
Profil
| Folgende Antworten hat der Fragensteller vermutlich noch nicht gesehen. |
walderich
Senior  Dabei seit: 03.05.2006 Mitteilungen: 1996
Wohnort: Bad Dürrheim, Deutschland
 | Beitrag No.1, eingetragen 2019-01-15
|
Hi Markus_Sw,
du kannst dir prinzipiell deine eigene CSV-Datei schreiben. Die Syntax ist ja recht simpel. Hier mal ein kleines Beispiel:
\sourceon MATLAB
% Ausgabedatei
fn = 'test.csv';
% Beispieldaten
data = {
'Name1' 0 0 now
'Name2' 1 1 now-1
};
% Formatieren der Datumswerte
data(:, 4) = cellfun(@(d) datestr(d, 'yyyy-mm-dd'), data(:, 4), 'Uniform', 0);
% Formatieren der Zahlen
nNumber = cellfun(@isnumeric, data);
data(nNumber) = cellfun(@mat2str, data(nNumber), 'Uniform', 0);
% Erzeugen des Formatierungs-Strings
csvFmt = repmat('%s,', 1, size(data, 2));
csvFmt(end) = char(10);
% Ausgabe der Daten in die Datei
data = data';
fd = fopen(fn, 'w');
fprintf(fd, csvFmt, data{:});
fclose(fd);
\sourceoff
Der Einfachheit halber wandle ich vor dem Schreiben der Daten in die CSV-Datei alle Werte in Strings um. Diese werden dann Zeilenweise in die CSV-Datei geschrieben.
Das Datumsformat kannst du natürlich frei wählen. Du musst lediglich das korrekte Format bei 'yyyy-mm-dd' eintragen. Die verfügbaren Formatierungs-Strings findest du in der Doku `doc datestr`.
Ich wandle die Zahlen mittels 'mat2str' um, damit auch Vektoren und Matrizen korrekt überführt werden. Wenn es sich um skalare Zahlewerte handelt, kannst du hier auch 'num2str' verwenden, das ist unter Umständen schneller bei der Konvertierung (vor allem bei vielen Werten interessant).
Da MATLAB beim Schreiben der Werte das Cell-Array von oben nach unten durchläuft, muss dieses vor der Ausgabe einmal gedreht werden. Deshalb die Zeile "data = data';".
Wenn du statt Kommas Semikola als Trennzeichen benötigst, musst du lediglich den String "%s," durch "%s;" ersetzen.
Ich hoffe das hilft dir weiter.
Viele Grüße,
Sebastian
|
Profil
|
|
All logos and trademarks in this site are property of their respective owner. The comments are property of their posters, all the rest © 2001-2023 by Matroids Matheplanet
This web site was originally made with PHP-Nuke, a former web portal system written in PHP that seems no longer to be maintained nor supported. PHP-Nuke is Free Software released under the GNU/GPL license.
Ich distanziere mich von rechtswidrigen oder anstößigen Inhalten, die sich trotz aufmerksamer Prüfung hinter hier verwendeten Links verbergen mögen. Lesen Sie die
Nutzungsbedingungen,
die Distanzierung,
die Datenschutzerklärung und das Impressum.
[Seitenanfang]
|