File 用dlmwrite在MATLAB中编写单元对象
我有一个7列的单元格数组。所有这些列都包含字符串。我想把这个单元格数组写入一个文本文件。首先,我只在单元格的1个元素上执行此操作,这是我的代码: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
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个文件运行它,但只是想确定一下,因为文件预览显示数据可能被过度写入同一行。是的,只是过度写入了它。你知道怎么解决这个问题吗?