我有一个包含7列的单元格数组。所有这些列都包含字符串。我想将此单元格数组写入文本文件。首先,我只在单元格的1个元素上执行此操作,这是我的代码:
dlmwrite('735.txt',cell{1},'delimiter','%s\t');
cell{1}
看起来像这样:
Columns 1 through 2
[1x30 char] [1x20 char]
Column 3
'Acaryochloris'
Column 4
'Cyanobacteria001'
Columns 5 through 6
'Cyanobacteria00' 'Cyanobacteria'
Column 7
'Bacteria'
它在不分离列的情况下为我提供了输出。示例输出是:
Acaryochloris_marina_MBIC11017AcaryochlorismarinaAcaryochlorisCyanobacteria001Cyanobacteria00CyanobacteriaBacteria
正确的输出应该在所有列之间有空格:
Acaryochloris_marina_MBIC11017 Acaryochloris_marina Acaryochloris Cyanobacteria001 Cyanobacteria00 Cyanobacteria Bacteria
请注意,对于第二列,我们需要在Acaryochloris
和marina
之间添加下划线。这两个词之间原本有一个空格。
我希望我能正确解释问题,谢谢你的帮助。谢谢!
答案 0 :(得分:2)
DLMWRITE用于数字数据。在您的情况下,它将char数据处理为数字,每个字符作为时间。您可能以不会看到制表符分隔符的方式查看结果文件。
您可以使用XLSWRITE将单元字符串数组写入文件。如果您不希望输出为Excel格式,请先运行DLMWRITE,将一些数字写入文件。
dlmwrite(filename,1)
xlswrite(filename, Acell{1})
不要叫你变量单元格,这是MATLAB中的一个关键字。
作为替代方案,您可以写入具有较低级别功能的文件,例如FPRINTF。
<强>更新强>:
如果要在for循环中使用XLSWRITE而不覆盖数据,可以指定要从中开始的行:
dlmwrite(filename,1)
for k = 1:10
xlswrite( filename, Acell{k}, 1, sprintf('A%d',k) )
end
更新2 :
不幸的是,它在最新的MATLAB版本中不再起作用(我相信从R2012b开始)。 XLSWRITE提供有关错误文件类型的错误。
答案 1 :(得分:1)
以下内容应该符合您的要求:
fid = fopen('735.txt', 'w');
fprintf(fid, '%s\t', cell{1}{:});
fclose(fid);