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

Printing cell elements to text file

所以我有一个包含 5 个元素的元胞数组。每个元素都是一个 n x 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

它将每个矩阵写成一行。这是我的代码(labels1 x 5 元胞数组):

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

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

使用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

请注意,在您编写下一个追加矩阵之前,我不得不做一些修改来执行回车 return。简单地说,我在矩阵后面附加了一个 space 以在附加时强制换行。对于每个车厢 return,您将看到一个空行,其中有一个 space,但我假设这不会成为问题。我还冒昧地在每个矩阵之前添加了 Label i,其中 i 是在单元格 i.

处看到的矩阵