如何保持双数组的格式?

时间:2012-07-30 20:54:58

标签: matlab file-io matrix floating-point number-formatting

2000    2000    2000    2000    2000    2000    2000    2000    2000    2000    2000    2000    2000    2000
2000    2000    2000       0       0       0       0       0       0       4       0       0    2000    2000
2000    2000    2000       0       0       0       0       0       0       0       0       0    2000    2000
2000    2000    2000       0       0       0       4       3       3       0       3       3    2000    2000
2000    2000    2000       0       4       4       9      44      31       4       0       0    2000    2000
2000    2000    2000       0       4       0      31     277     531      29       0       0    2000    2000
2000    2000    2000       0       0       4       7       0       3      10       0       3    2000    2000
2000    2000    2000       0       0       4       3       0       0       5       0       1    2000    2000
2000    2000    2000       0       0       0       0       0       0       3       1       1    2000    2000
2000    2000    2000       0       0       0       0       3       1       2       1       1    2000    2000
2000    2000    2000    2000    2000    2000    2000    2000    2000    2000    2000    2000    2000    2000
2000    2000    2000       0       0       0       0       0       0       0       0       0    2000    2000
2000    2000    2000       0       0       0       0       0       0       0       0       0    2000    2000  
2000    2000    2000       0       0       0       4       0       4       0       0       0    2000    2000
2000    2000    2000       0       0       5      27      21       6       0       3       3    2000    2000
2000    2000    2000       0       3      31     274     316      25       1       1       1    2000    2000 
2000    2000    2000       0       0       4       5       4       6       0       0       0    2000    2000
2000    2000    2000       0       0       0       0       0       1       0       0       0    2000    2000
2000    2000    2000       0       0       0       0       0       1       0       0       0    2000    2000
2000    2000    2000       0       0       0       1       0       0       0       0       0    2000    2000
2000    2000    2000    2000    2000    2000    2000    2000    2000    2000    2000    2000    2000    2000
2000    2000    2000       0       0       0       0       0       0       0       0       0    2000    2000
2000    2000    2000       0       0       0       0       3       0       0       0       0    2000    2000
2000    2000    2000       0       0       0       4       0       3       0       0       0    2000    2000
2000    2000    2000       0       0       3       3      64       6       0       3       0    2000    2000
2000    2000    2000       0       0       3     473     374      30       9       1       0    2000    2000
2000    2000    2000       0       4       3       4       2      10       3       2       0    2000    2000
2000    2000    2000       0       0       0       0       0       0       1       1       0    2000    2000
2000    2000    2000       0       0       0       0       0       0       1       1       0    2000    2000
2000    2000    2000       0       0       0       0       0       0       0       2       1    2000    2000
2000    2000    2000    2000    2000    2000    2000    2000    2000    2000    2000    2000    2000    2000
2000    2000    2000       0       0       0       0       0       0       0       0       0    2000    2000
2000    2000    2000       0       0       0       0       0       0       0       0       0    2000    2000
2000    2000    2000       0       0       0       3       0       3       0       0       0    2000    2000
2000    2000    2000       0       0       4      18      34       9       0       0       0    2000    2000
2000    2000    2000       0       0       6     251     344      17       2       0       0    2000    2000
2000    2000    2000       0       0       8       2       3       5       0       3       0    2000    2000
2000    2000    2000       0       0       0       0       0       4       0       2       0    2000    2000
2000    2000    2000       0       0       0       0       0       1       0       0       0    2000    2000
2000    2000    2000       0       0       0       0       0       1       0       0       0    2000    2000
2000    2000    2000    2000    2000    2000    2000    2000    2000    2000    2000    2000    2000    2000

上面是我目前在MatLab中生成的表,但是当我尝试保存它时,它只是将它粘在一个长字符串中,当我需要将它保留在这种格式中时。此外,我需要将它们以这种格式用逗号分隔。

这是我试图用来保存它的代码片段。

new_fname = ['star_chip' '_' date '.txt'];
path1 = '\\pfile01thn\bbruffey$\My Documents\IDLtoMatlab\star_chips\';
fid = fopen([path1 new_fname], 'w');
fprintf(fid,'%d',star_block);
fclose(fid);

3 个答案:

答案 0 :(得分:2)

这是你玩的另一种可能性。这并没有在那里得到逗号,如果你真的想要它们,我会试着让它在以后工作。

这假设您要保存的矩阵名为A,而fid是您打开要写入的文件的文件ID。

fid = fopen('filename path here', 'w');
for n = 1:size(A,1)
    fprintf(fid, '%5d', A(n,:))
    fprintf(fid, '\r\n')
end

%5d'命令中的fprintf为有符号整数的数据类型指定字段宽度为5。如果您真的想要,可以将d替换为iudi虽然相同。 u只是未签名。如果您愿意,可以使用大量其他修饰符,只需查看帮助文件中的函数即可。

在记事本中查看时也会使用第二条fprintf行。它会添加一个回车符和一个换行符,以便下一行向下碰撞,并在记事本(也需要回车)中这样做。

希望有所帮助!


有点凌乱(如在另一个循环中,eww = P)以我想到的方式得到逗号。

fid = fopen('filename path here', 'w');
for n = 1:size(A,1)
    for m = 1:size(A,2)
        fprintf(fid, '%5d', A(n,m));
        fprintf(fid, ',');
    end
    fprintf(fid, '\r\n');
end

我不是使用这条路线的忠实粉丝,但它确实完成了工作。如果A非常大,那么您可以在这里有效地浏览它的每个元素。


这反映了Thor留下的评论:

fid = fopen('filename path here', 'w');
for n = 1:size(A,1)
    for m = 1:size(A,2)
        fprintf(fid, '%5d,', A(n,m));
    end
    fprintf(fid, '\r\n');
end

答案 1 :(得分:1)

使用dlmwrite函数,如果您希望将其存储为ASCII表,请使用:

dlmwrite(new_fname, int64(star_block), '\t')

答案 2 :(得分:1)

您可能需要查看

dlmwrite('output.txt', yourMatrix);

这是帮凶:

yourMatrix = dlmread('input.txt')

当然,您可能需要更多选项。输入help dlmwritedoc dlmwrite以获取更多信息。