我用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;
端
答案 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' )