将单元格元素打印到文本文件

时间:2016-01-04 01:08:28

标签: matlab matrix file-io cell-array

所以我有一个包含5个元素的单元格数组。每个元素都是 n by 6 矩阵,如下所示:

31399.5 24581.8 24083.9 22764.7 22458   15473.5
81169.4 83739.2 82516.1 84139.6 83552.3 55342.7
41356.6 38413.3 37613   34329.8 38681.8 23949.9

对于数组中的每个元素,我想以与上面完全相同的格式将相应的矩阵打印到文本文件中 - 用空行分隔单元格数组的每个元素。

现在我能够将单元格数组的每个元素写入文本文件。但是,程序不会在新行上写下每一行,它看起来更像是这样:

31399.5 24581.8 24083.9 22764.7 22458 15473.5 81169.4 83739.2 82516.1   84139.6 83552.3 55342.7 41356.6 38413.3 37613 34329.8 38681.8 23949.9

它将每个矩阵写为一行。这是我的代码(labels 1 x 5 单元格数组):

fid = fopen('labels.txt','wt');
for i = 1:length(labels)
    fprintf(fid,'%g\t',labels{i}');
    fprintf(fid,'\n');
end
fclose(fid)

如何修改此项以便逐行显示数据?任何帮助都非常感谢。

1 个答案:

答案 0 :(得分:2)

使用fprintf打印矩阵绝不是非常友好的。尝试使用dlmwrite代替fprintf,如果要将结果附加到文件,请使用-append标记。您还需要调整精度,因为默认情况下dlmwrite会舍入数字。这样的事情可以奏效:

for i = 1:length(labels)
    dlmwrite('labels.txt', sprintf('Label %d', i), '-append');
    dlmwrite('labels.txt', labels{i}, '-append', 'precision', 6);
    dlmwrite('labels.txt', ' ', '-append');
end

请注意,在编写下一个附加矩阵之前,我必须做一些黑客来执行回车。简单地说,我在矩阵之后添加了一个空格,以便在追加时强制换行。对于每个回车,你会看到一个空格,但我认为这不会有问题。我还冒昧地在每个矩阵之前添加Label i,其中i是在单元格i看到的矩阵。