我有一个单元格数组,需要根据特定格式打印在.txt文件中我已经尝试了一些在线帮助(包括matlab centraldlmcell,但即使这样也没有给我想要的答案分隔符是\t。

cellarray = { ...
        'AAPL' '2/20/2011' 100.5
        'MSFT' '2/15/2011' 43.4551
            } ;

输出应为.txt文件,格式如下:(使用制表符分隔符)
"AAPL"    "2/20/2011"    100.5
"MSFT"    "2/15/2011"    43.4551

单元格的最小行数为8000行,最多为15000行。没有行会有空列矢量化解决方案可行吗感谢你的帮助。

最佳答案

以下是您的示例:

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);

10-05 21:15