Write table with several header lines to file

24 views (last 30 days)
Michael
Michael on 27 Feb 2017
Commented: Guillaume on 27 Feb 2017
I would like to write a csv-file with the delimiter ";" and several header lines. The csv-file shold look like the following example in the end:
Header line 1 (string 1)
Header line 2 (string 2)
UTC [yyyy-mm-dd HH:MM:SS.fff] ; vx [m/s] ; vy [m/s] ; vz [m/s]
2017-02-11 23:00:00.000 ; -2.3059 ; 0.2341 ; 0.1177
2017-02-11 23:00:00.002 ; -2.5948 ; 0.1642 ; -0.0821
2017-02-11 23:00:00.004 ; -2.5439 ; 0.2497 ; 0.0270
. . .
I use the following code:
header={'Header line 1 (string 1)' 'Header line 2 (string 2)' 'UTC [yyyy-mm-dd HH:MM:SS.fff]' 'vx [m/s]' 'vy [m/s]' 'vz [m/s]'};
v=Data; % N×3 double matrix of measured velocity values
t=UTCtime; % N×1 datetime array
output_file_csv=filepath; % path and file name of output file
fid = fopen(output_file_csv, 'wt');
for l = 1:numel(header)
fprintf(fid, '%s\n', header{l});
end
fclose(fid);
M={t,v};
dlmwrite(output_file_csv, M, '-append', 'delimiter', ';');
This code created the error message
Error using dlmwrite (line 112)
The input cell array cannot be converted to a matrix.

Answers (1)

Guillaume
Guillaume on 27 Feb 2017
headerlines = {'AG A&K, IG KlimAT';
'HBI, 2017-02-23 03:46:04';
'+QSLX 100.7';
'Zeit ; v3Dx_QSLX100_7_ESTO ; v3Dy_QSLX100_7_ESTO ; v3Dz_QSLX100_7_ESTO';
'UTC [yyyy-mm-dd HH:MM:SS.fff] ; Stroemungsgeschwindigkeit_3Dx [m/s] ; Stroemungsgeschwindigkeit_3Dy [m/s] ; Stroemungsgeschwindigkeit_3Dz [m/s]'};
filepath = 'somefile.txt';
fid = fopen(filepath, 'wt');
for l = 1:numel(headerlines)
fprintf(fid, '%s\n', headerlines{l});
end
fclose(fid);
dlmwrite(filepath, yourmatrix, '-append', 'delimiter', ';'); %with optional 'newline', if you wish
  2 Comments
Michael
Michael on 27 Feb 2017
Edited: Michael on 27 Feb 2017
Thank you for your quick answer. Unfortunately dlmwrite does not work (see edited question above).
Guillaume
Guillaume on 27 Feb 2017
You probably can do it with xlswrite but at this point, I'd simply do it with low level functions
fid = fopen(filepath, 'wt');
for l = 1:numel(headerlines);
fprintf(fid, '%s\n', headerlines{l});
end
UTCtime.Format = 'yyyy-MM-dd HH:mm:ss.SSS'; %May not be needed if UTCtime already use the correct format.
out = [num2cell(UTCtime), num2cell(Data)].'; %put it all in a cell array
fprintf(fid, '%s; %f; %f; %f\n', out{:});
fclose(fid);

Sign in to comment.

Categories

Find more on Characters and Strings in Help Center and File Exchange

Community Treasure Hunt

Find the treasures in MATLAB Central and discover how the community can help you!

Start Hunting!