File 用dlmwrite在MATLAB中编写单元对象

File 用dlmwrite在MATLAB中编写单元对象,file,matlab,cells,File,Matlab,Cells,我有一个7列的单元格数组。所有这些列都包含字符串。我想把这个单元格数组写入一个文本文件。首先,我只在单元格的1个元素上执行此操作,这是我的代码: dlmwrite('735.txt',cell{1},'delimiter','%s\t'); 单元格{1}如下所示: 第1列到第2列 [1x30 char] [1x20 char] 第3列 'Acaryochloris' 第4列 'Cyanobacteria001' 第5列到第6列 'Cyanobacteria00' 'Cyan

我有一个7列的单元格数组。所有这些列都包含字符串。我想把这个单元格数组写入一个文本文件。首先,我只在单元格的1个元素上执行此操作,这是我的代码:

 dlmwrite('735.txt',cell{1},'delimiter','%s\t');
单元格{1}
如下所示:

第1列到第2列

[1x30 char]    [1x20 char]
第3列

'Acaryochloris'
第4列

'Cyanobacteria001'
第5列到第6列

'Cyanobacteria00'    'Cyanobacteria'
第7列

'Bacteria'
它在不分隔列的情况下为我提供输出。样本输出为:
Acaryochloris_marina_MBIC1017AcaryochlorismarinaAcaryochloriscyanobacteria 001蓝藻A00cyanobacteria

正确的输出应在所有列之间留有空格:

Acaryochloris_marina_MBIC1017 Acaryochloris_marina Acaryochloris蓝藻A001蓝藻A00蓝藻细菌

注意,对于第二列,我们需要在
Acaryochloris
marina
之间添加下划线。原来这两个词之间有一个空格


我希望我正确地解释了这个问题,将感谢您的帮助。谢谢

DLMWRITE用于数字数据。在您的例子中,它将字符数据处理为数字,每个字符作为时间。您可能在查看结果文件时没有看到制表符分隔符

可以使用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提供错误文件类型的错误信息。

DLMWRITE用于数字数据。在您的例子中,它将字符数据处理为数字,每个字符作为时间。您可能在查看结果文件时没有看到制表符分隔符

可以使用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给出了错误文件类型的错误信息。

以下内容可以满足您的要求:

fid = fopen('735.txt', 'w');
fprintf(fid, '%s\t', cell{1}{:});
fclose(fid);

符合以下内容的内容应满足您的要求:

fid = fopen('735.txt', 'w');
fprintf(fid, '%s\t', cell{1}{:});
fclose(fid);

为什么要打开
out.txt
?DLMWRITE不需要
fopen
呼叫。是的,没错,我想删除它。我正在尝试
fprintf
首先您可以编辑您的问题以删除这些行。为什么要打开
out.txt
?DLMWRITE不需要
fopen
呼叫。是的,没错,我想删除它。我正在尝试
fprintf
首先您可以编辑您的问题以删除这些行。等等,在
xlswrite
之前运行
dlmwrite
如何将文件格式从Excel更改为任何格式?请尝试运行它。显然,xlswrite可以识别文件格式,并且不会更改它。嗯,是的。如果我想对一堆文件执行此操作,并将
xlswrite
命令保留在for循环中……它会自动更新行号吗?是否在下一行写入新数据?我正在用1200个文件运行它,但只是想确定一下,因为文件预览显示数据可能被过度写入同一行。是的,只是过度写入了它。知道如何解决这个问题吗?等等,在
xlswrite
之前运行
dlmwrite
如何将文件格式从Excel更改为任何格式?试着运行它。显然,xlswrite可以识别文件格式,并且不会更改它。嗯,是的。如果我想对一堆文件执行此操作,并将
xlswrite
命令保留在for循环中……它会自动更新行号吗?是否在下一行写入新数据?我正在用1200个文件运行它,但只是想确定一下,因为文件预览显示数据可能被过度写入同一行。是的,只是过度写入了它。你知道怎么解决这个问题吗?