亲爱的stackoverflowers,
我想用matlab创建一个.txt文件。 内容应使用制表符分隔。 它应该有3列,第3列应该填充来自单元格数组的字符串。 我们说
A=[2; 3; 3;];
B=2*A;
C=cell(3,1);
C{1,1}='string1'; C{2,1}='string2'; C{3,1}='string3';
最后,它应该是这样的:
2 4 string1
3 6 string2
3 6 string3
我已经发现,如何将2个矩阵放在一个文本文件中: dlmwrite('filename.txt',[A B],'delimiter','\ t')
但是如何追加细胞的内容呢? 最好只包含文件中的字符串,而不是单引号。 我既没有在其他地方找到解决方案,也没有在其他地方问这个问题。 我提出各种建议。
答案 0 :(得分:3)
尝试以下方法:
% Open a file for writing (if you want to append to file use 'a' instead of 'w')
fid = fopen(file,'w');
for i = 1:size(A,1)
fprintf(fid,'%d %d %s\n',A(i),B(i),C{i})
end
fclose(fid)
希望这有帮助
答案 1 :(得分:1)
关于dlmwrite的文档声明:
<强>说明强>
电子表格程序可以读取生成的文件。
dlmwrite函数不接受输入矩阵的单元数组 M.要导出仅包含数字数据的单元格数组,请使用 cell2mat在调用csvwrite之前将单元格数组转换为数字矩阵。
导出具有混合字母和数字的单元格数组 数据,其中每个单元格包含一个元素,您可以创建一个 使用xlswrite的Excel电子表格(如果您的系统已安装Excel)。 对于所有其他情况,您必须使用低级导出函数进行写入 你的数据。
因此,要么将其编写为Excel电子表格,要么使用必须编写自己的转换函数。
例如
A=[2; 3; 3;];
B=2*A;
C=cell(3,1);
C{1,1}='string1'; C{2,1}='string2'; C{3,1}='string3';
% First solution
f = fopen('filename.txt', 'w');
for n = 1:3
fprintf(f, '%d\t%d\t%s\n', A(n), B(n), C{n});
end
fclose(f);
% Another solution
% create the table as a single cell array with only strings
C2 = [arrayfun(@num2str, [A, B], 'UniformOutput', false) C]'; % <- note the transpose
f = fopen('filename.txt', 'w');
fprintf(f, '%s\t%s\t%s\n', C2{:}); % <- every three entries are written as a line
fclose(f);