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

<;MATLAB>;如何将大量数据保存到.txt文件?,matlab,printf,Matlab,Printf,我做了一个865850乘4464的矩阵 然后我需要把它保存到一个.txt文件中 为此,我使用fprintf,但我遇到了一个困难 共有4464列。我如何指定他们的formatspec 它们都是整数 现在我只知道一种方法 fprintf(fid,'%10d%10d..%10d',零);(4464次) 这是拯救他们的唯一方法吗 谢谢~ clear all; close all; loop = 1; Zeros = zeros(15000, 4464); fileID = fopen('data2.

我做了一个865850乘4464的矩阵

然后我需要把它保存到一个.txt文件中

为此,我使用fprintf,但我遇到了一个困难

共有4464列。我如何指定他们的formatspec

它们都是整数

现在我只知道一种方法

fprintf(fid,'%10d%10d..%10d',零);(4464次)

这是拯救他们的唯一方法吗

谢谢~

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;
全部清除;全部关闭;
循环=1;
零=零(15000,4464);
fileID=fopen('data2.txt','r');
而回路<4200
Data=fscanf(文件ID,'%d%d%d:%d%d\n',[51000]);
数据=数据';
DataA=数据(:,1);
数据=数据(:,2);
数据c=数据(:,3);
数据D=数据(:,4);
DataE=数据(:,5);
对于m=1:100000
r=数据a(m);
c=((数据(m)-1)*24*6+DataC(m)*6+DataD(m))+1;
零(r,c)=数据e(m);
结束
对于n=1:4464
Zeros1{n}=零(:,n);
fileID2=fopen('result.txt','a');
fprintf(fileID2,'%10d%10d\n',Zeros1{1},Zeros1{2});
结束
fclose(fileID2);
循环=循环+1;

结束

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


我经常想补充一点,对于这种大小的数据,文本存储是一个坏主意。没有人会在文本编辑器中打开它并认为“哦,这很实用”。每个人都会在携带数百兆左右不必要的文件大小时感到不快。如果您打算在matlab中打开数据,只需使用
savemat
方法来存储数据,或者使用二进制格式,例如,只需将数据写入一个文件,并以合理的二进制表示您的数字。

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


我经常想补充一点,对于这种大小的数据,文本存储是一个坏主意。没有人会在文本编辑器中打开它并认为“哦,这很实用”。每个人都会在携带数百兆左右不必要的文件大小时感到不快。如果您打算在matlab中打开数据,只需使用
savemat
方法来存储数据,或者使用二进制格式,例如,只需将数据写入一个文件,并以合理的二进制表示您的数字。

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


我经常想补充一点,对于这种大小的数据,文本存储是一个坏主意。没有人会在文本编辑器中打开它并认为“哦,这很实用”。每个人都会在携带数百兆左右不必要的文件大小时感到不快。如果您打算在matlab中打开数据,只需使用
savemat
方法来存储数据,或者使用二进制格式,例如,只需将数据写入一个文件,并以合理的二进制表示您的数字。

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


我经常想补充一点,对于这种大小的数据,文本存储是一个坏主意。没有人会在文本编辑器中打开它并认为“哦,这很实用”。每个人都会在携带数百兆左右不必要的文件大小时感到不快。如果您计划在matlab中打开数据,只需使用
savemat
方法来存储数据,或者使用二进制格式,例如,只需将数据写入一个文件,并以合理的二进制表示您的数字。

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


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


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


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


?如果您确实想使用
fprintf
,可以使用
repmat
构建格式说明符。类似于:
formatspec=repmat(“%10d”,14464)
。不过,我必须同意@MarcusMuller的观点,我认为如果文本格式确实是您所需要的,那么对于这种大小的数据集,二进制将更方便。如果您确实想使用
fprintf
,您可以使用
repmat
构建格式说明符。类似于:
formatspec=repmat(“%10d”,14464)
。不过,我必须同意@MarcusMuller的观点,我认为如果文本格式确实是您所需要的,那么对于这种大小的数据集,二进制将更方便。如果您确实想使用
fprintf
,您可以使用
repmat
构建格式说明符。类似于:
formatspec=repmat(“%10d”,14464)
。不过,我必须同意@MarcusMuller的观点,我认为如果文本格式确实是您所需要的,那么对于这种大小的数据集,二进制将更方便。如果您确实想使用
fprintf
,您可以使用
repmat
构建格式说明符。类似于:
formatspec=repmat(“%10d”,14464)
。不过我必须同意@MarcusMuller的观点,如果你真的需要文本格式,那么对于这种大小的数据集,二进制会更方便。我更喜欢@Helloemmy的答案来保存文本数据,但我投票支持你告诉OP这是个坏主意我更喜欢@Helloemmy的答案来保存文本数据,但是你得到我的投票,告诉OP这是一个坏主意我更喜欢@HelloLemmy的答案来保存文本数据,但是你得到我的投票,告诉OP这是一个坏主意我更喜欢@HelloLemmy的答案来保存文本数据,但是你得到我的投票,告诉OP这是一个坏主意
>> 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' )