<matlab>如何将大量数据保存到.txt文件?</matlab>

时间:2015-04-09 23:00:22

标签: matlab printf

我用4464矩阵制作了865850。

然后我需要将其保存为.txt文件。

为此,我使用了fprintf,但我遇到了一个困难的障碍......

有4464列。我如何指定他们的格式规范?

它们都是整数。

现在我只知道一种方式......

fprintf(fid,'%10d%10d .....%10d',Zeros); (4464times ..)

是保存它们的唯一方法吗?

谢谢〜!!

clear all; close all;

loop = 1;
Zeros = zeros(15000, 4464);

fileID = fopen('data2.txt','r');

while loop < 4200
    Data = fscanf(fileID, '%d %d %d:%d %d\n', [5, 100000]);
    Data = Data';
    DataA = Data(:,1);
    DataB = Data(:,2);
    DataC = Data(:,3);
    DataD = Data(:,4);
    DataE = Data(:,5);


    for m=1:100000
        r = DataA(m);
        c = ((DataB(m)-1)*24*6 + DataC(m)*6 + DataD(m))+1;
        Zeros(r,c) = DataE(m);            
    end
    for n=1:4464
        Zeros1{n}=Zeros(:, n);
        fileID2 = fopen('result.txt','a');
        fprintf(fileID2, '%10d %10d\n ', Zeros1{1}, Zeros1{2});
    end
   fclose(fileID2);
   loop = loop + 1;

2 个答案:

答案 0 :(得分:2)

不要将printf与整行一起使用。使用CSV导出,或迭代每行的每个元素并单独打印。

我经常想补充一点,对于这种规模的数据,文本存储是一个糟糕的想法。没有人会在文本编辑器中打开它,并想“哦,这很实用”。每个人都有一个不好的时间携带数百兆字节的不必要的文件大小。如果您打算在matlab中打开数据,只需使用savemat方法来存储数据,或者使用二进制格式,例如只需对数据执行fwrite到具有合理二进制表示形式的文件你的号码。

答案 1 :(得分:1)

您也可以使用内置的MATLAB ASCII保存格式(而不是printf):

>> foo = magic( 4 )

foo =

16     2     3    13
 5    11    10     8
 9     7     6    12
 4    14    15     1

>> save( 'foo.txt', '-ascii', 'foo' )