while errorExist == 1 try
M = dlmread(files{i}, delim, row, col);
errorExist = 0;
catch err
if err.message(98) == '%' % erste verwendete Zeile ist ein Kommentar
row = row+1;
elseif err.message(98) == ';' % Trennzeichen ist ein Semikolon
delim = ';';
else
rethrow(err); % Error konnte nicht behoben werden. end
errorExist = 1;
end end
M(:,[2,4,6]) = M(:,[2,4,6])*10;
try
%dlmwrite(files{i}, M, 'delimiter', delim, '-append', 'coffset', col, 'roffset', row, 'precision', '%0.16f');
dlmwrite('Test.csv', M, 'delimiter', delim, '-append', 'coffset', col, 'roffset', row, 'precision', '%0.16f');
catch err
error('Fehler beim schreiben der Datei: %s', files{i});
end
Die lange try-catch ist dadurch entstanden das die Anzahl der Headerzeilen in den Dateien variiert und das Trennzeichen ein Komma oder Semikolon sein kann.
Also das einlesen und das Multiplizieren des Arrays funktioniert ja schon mal ganz gut.
Jetzt habe ich aber das Problem, dass die Matrix M die alten Werte in der csv Datei überschreiben soll.
Wenn ich bei dlmwrite -append angebe dann fügt er die Daten ganz am Ende an die alte Datei an.
Wenn ich -append nicht angebe dann wird der Header der alten Datei mit leeren Einträgen (zB: ,,,,,) überschrieben, die Daten sind dann aber an der richtigen Stelle.
Hat da jemand eine Idee wie ich den Header erhalten kann, bzw dlmwrite dazu bringe erst ab einer bestimmten Zeile die Werte neu zu schreiben?
while errorExist == 1 try
M = dlmread(files{i}, delim, row, col);
errorExist = 0;
catch err
if err.message(98) == '%' % erste verwendete Zeile ist ein Kommentar
row = row+1;
elseif err.message(98) == ';' % Trennzeichen ist ein Semikolon
delim = ';';
else
rethrow(err); % Error konnte nicht behoben werden. end
errorExist = 1;
end end
try dlmwrite(files{i}, M, 'delimiter', delim, '-append', 'precision', '%0.16f', 'newline', 'pc');
catch err
error('Fehler beim schreiben der Datei: %s', files{i});
end end
Du kannst Beiträge in dieses Forum schreiben. Du kannst auf Beiträge in diesem Forum antworten. Du kannst deine Beiträge in diesem Forum nicht bearbeiten. Du kannst deine Beiträge in diesem Forum nicht löschen. Du kannst an Umfragen in diesem Forum nicht mitmachen. Du kannst Dateien in diesem Forum posten Du kannst Dateien in diesem Forum herunterladen
MATLAB, Simulink, Stateflow, Handle Graphics, Real-Time Workshop, SimBiology, SimHydraulics, SimEvents, and xPC TargetBox are registered trademarks and The MathWorks, the L-shaped membrane logo, and Embedded MATLAB are trademarks of The MathWorks, Inc.