Следующее будет работать для вашего примера:
C = cellarray.';
fid = fopen('file.dlm', 'wt');
fprintf(fid, '"%s"\t"%s"\t%g\n', C{:});
fclose(fid);
MATLAB повторно использует строку форматирования до тех пор, пока не закончится ввод. В принципе, вы могли бы сначала создать строку форматирования:
fstr = '';
for ic = 1:size(cellarray,2)
switch class(cellarray{1,ic})
case 'char'
fstr = [fstr '"%s"'];
otherwise
% Assume numeric
fstr = [fstr '%g'];
end
if ic < size(cellarray,2), fstr = [fstr '\t']; else fstr = [fstr '\n']; end
end
Тогда
C = cellarray.';
fid = fopen('file.dlm', 'wt');
fprintf(fid, fstr, C{:});
fclose(fid);