Mit dem Matlab eigenen csvwrite ist es nicht möglich, die Inhalte von Cell-Arrays als CSV-Datei zu exportieren. Unter dem Namen cellwrite gibt es eine Alternative für zweidimensionale Cell-Arrays. Die Funktion liefert aber recht einfache CSV-Dateien. Ausserdem ist die Formatierung – insbesondere von Zahlen – für ein deutsches Excel schwierig lesbar. Man muss die Datei mühselig konvertieren, damit am Ende alles stimmt. Aus diesem Grund habe ich die Funktion mal für “deutsche” CSV-Dateien angepasst. Strings werden hierbei in Anführungszeichen ausgegeben; Zahlen mit Komma als Dezimaltrennzeichen und als Spaltentrennzeichen wird das Semikolon verwendet. Damit können die erzeugten CSV-Dateien einfach geöffnet werden in Excel.
function cellwrite(filename, cellarray)
[rows, cols] = size(cellarray);
fid = fopen(filename, 'w');
for i_row = 1:rows
file_line = '';
for i_col = 1:cols
contents = cellarray{i_row, i_col};
if isnumeric(contents)
contents = strrep(num2str(contents),'.',',');
elseif isempty(contents)
contents = '';
else
contens = ['"' contents '"'];
end
if i_col < cols
file_line = [file_line, contents, ';'];
else
file_line = [file_line, contents];
end
end
count = fprintf(fid, '%s\n', file_line);
end
st = fclose(fid);
if st == -1
error('Bad file write')
end
0 Responses to “CSV Dateien in Matlab erstellen”