How Can I Append Multiple Lined Header to a CSV File?
조회 수: 7 (최근 30일)
이전 댓글 표시
I am looking to create a csv file with the date/time, variable names, and a table of data - something like:
Date, 01/11/20
A, B
1, 4
2, 5
3, 7
I've created a 2x2 cell for the header, and have an array of doubles containing the data. However, I cannot understand the error message I receive when trying to use the following code. What do I need to change in the code to make this work?
savetofile = 'test.csv';
date = datetime(now,'ConvertFrom','datenum');
data = [1 4; 2 5; 3 7];
data = array2table(data);
headerlines = {'Date:', date;
' A', 'B'};
fid = fopen(savetofile, 'wt');
for l = 1:numel(headerlines)
fprintf(fid,'%s\n', headerlines{l});
end
fprintf(fid, '%f; %f\n', data{:});
fclose(fid);
The error message I get is:
Subscripting into a table using one subscript (as in t(i)) or three or more subscripts (as in t(i,j,k)) is not supported. Always specify a row subscript and a variable subscript, as in t(rows,vars).
What am I doing wrong the subscripting?
댓글 수: 0
채택된 답변
Ameer Hamza
2020년 11월 16일
편집: Ameer Hamza
2020년 11월 16일
The indexing of table using data{:} is incorrect. This shows all the ways a table can be indexed: https://www.mathworks.com/help/matlab/matlab_prog/access-data-in-a-table.html. However, writecell() will be a more robust solution.
savetofile = 'test.csv';
date = datetime(now,'ConvertFrom','datenum');
data = [1 4; 2 5; 3 7];
data = num2cell(data);
headerlines = {'Date:', date;
' A', 'B'};
C = [headerlines; data];
writecell(C, savetofile)
댓글 수: 5
Peter Perkins
2020년 11월 18일
Ted, creating a cell array is going to use a lot of memory if your data are even moderately large, and using cell arrays for numeric adata is just a bad habit that you want to stay away from. Nothing wrong with using a table. Write your header to the file, then append to it using writetable. If you have a recent version of MATLAB, use writematrix.
Also, use date = datetime('now') instead of convert from datetime.
추가 답변 (0개)
참고 항목
카테고리
Help Center 및 File Exchange에서 Dates and Time에 대해 자세히 알아보기
Community Treasure Hunt
Find the treasures in MATLAB Central and discover how the community can help you!
Start Hunting!