fprintf for 6 array in double type and 2 date vectors
Show older comments
Hi All,
I want to use fprintf for 6 double arrays and 2 date vectors. The dates will be at the first and second column and double arrays will come after. All of the arrays are 48x1 so I want them to get placed in 48 rows and 8 columns as a shape of 48x8 table. And also I want their headers on top. Headers are char as well. I wrote the code below but it gives very messy table.
filename = 'Results.csv';
fid = fopen(filename, 'wt');
if fid ~= -1
fprintf(filename,'%6s', column_headers);
for row = 1 : length(M)
fprintf(fid, '%s %12.4f %12.4f %d %d %d %d %d %d \n', char(date1(row,:)),char(date2(row,:)), dataRes(row), M(row), M2(row), M3(row),M4(row),MWDif(row));
end
fclose(fid);
end
Thanks in advance.
1 Comment
dpb
on 11 Jan 2019
printf(filename,'%6s', column_headers);
for row = 1 : length(M)
fprintf(fid, '%s %12.4f %12.4f %d %d %d %d %d %d \n',
You created header row with only 6 columns widths and then wrote data of:
length(date format) 12 12 five_variable_width
Use counted widths for every column, including what is needed for spacing. There are examples with fprintf of similar idea.
BTW a convenient ML idiom in creating format strings for repeated variables is
fmt=['%14s' repmat('%12.4f', 1,2) repmat('%6d',1,6) '\n'];
or similar
Accepted Answer
More Answers (0)
Categories
Find more on Workspace Variables and MAT Files 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!