MATLAB创建包含单元格中的数字和字符串的.txt文件

时间:2012-11-16 16:13:16

标签: matlab

亲爱的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')

但是如何追加细胞的内容呢? 最好只包含文件中的字符串,而不是单引号。 我既没有在其他地方找到解决方案,也没有在其他地方问这个问题。 我提出各种建议。

2 个答案:

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