How to write cell array to csv file
3 次查看(过去 30 天)
显示 更早的评论
I'm running into difficulties writing my cell array into a csv file. Below is a short description of what I have done to obtain the cell array. Using text scan on 5 csv files with same format but different data I obtained a <1x26 cell> with columns containing both cells and doubles. Now after doing some work with the files I'm left with a cell array in the same format:
Columns 1 through 4
{9268x1 cell} [9268x1 double] [9268x1 double] [9268x1 double]
Columns 5 through 8
[9268x1 double] [9268x1 double] [9268x1 double] [9268x1 double]
Columns 9 through 12
[9268x1 double] [9268x1 double] [9268x1 double] [9268x1 double]
Columns 13 through 16
[9268x1 double] [9268x1 double] [9268x1 double] [9268x1 double]
Columns 17 through 20
[9268x1 double] [9268x1 double] {9268x1 cell} {9268x1 cell}
Columns 21 through 24
[9268x1 double] [9268x1 double] [9268x1 double] [9268x1 double]
Columns 25 through 26
[9268x1 double] {9268x1 cell}
Now my question is: How can i write this back into a csv file? I've tried with fprintf, cell2csv (online) and numerously other online scripts but I haven't found anything to help me do this. Thanks in advance for your help and time.
Regards,
Lennaert
2 个评论
采纳的回答
Pedro Villena
2012-10-17
编辑:Pedro Villena
2012-11-5
data = {{'asd';'qew';'zxc'} [1;2] [4;5;6] [7;8;9] [10;11;12;13]};
fid = fopen('csvfilename.csv','w');
for iii=1:length(data)-1,
maxNRows = max([length(data{iii}) length(data{iii+1})]);
end
for ii=1:maxNRows, %%1 -> 47165 rows
for i=1:length(data), %%1 -> 26 columns
try
if iscell(data{i}),
fprintf(fid,'%s,',cell2mat(data{i}(ii)));
else
fprintf(fid,'%f,',data{i}(ii));
end
catch ME
fprintf(fid,',');
end
end
fprintf(fid,'\n');
end
fclose(fid);
更多回答(1 个)
Peter Perkins
2012-10-16
Lennaert, if you have access to the Statistics Toolbox, you may find using dataset arrays is one way to go. Hard to say without knowing what's actually in your CSV files, but if it's a mixture of strings and numbers, you should be able to read the files into dataset arrays using the dataset constructor, combine them (not sure what you need to do there), and then use the export method to write back out to a CSV file.
另请参阅
类别
在 Help Center 和 File Exchange 中查找有关 Cell Arrays 的更多信息
产品
Community Treasure Hunt
Find the treasures in MATLAB Central and discover how the community can help you!
Start Hunting!