我用這個線在我的計劃:如何保存大數據量,而無需使用存儲
...
A=zeros(x,y);
save 'A.txt' A -ascii;
B=zeros(x,y+1);
save 'B.txt' B -ascii;
但是當我運行它,內存溢出發生,程序會崩潰。因爲變量A
和B
非常大。
我想要一個像下面的方式保存zeros(x,y)
文件直接而不是使用內存的方式。
save 'A.txt' zeros(x,y) -ascii;
但是這不起作用。
我用這個線在我的計劃:如何保存大數據量,而無需使用存儲
...
A=zeros(x,y);
save 'A.txt' A -ascii;
B=zeros(x,y+1);
save 'B.txt' B -ascii;
但是當我運行它,內存溢出發生,程序會崩潰。因爲變量A
和B
非常大。
我想要一個像下面的方式保存zeros(x,y)
文件直接而不是使用內存的方式。
save 'A.txt' zeros(x,y) -ascii;
但是這不起作用。
嘗試MATFILE對象。然後你可以將數據保存到mat文件中的變量中。
filename = 'test.mat';
matObj = matfile(filename,'Writable',true);
n = 1000;
for k=1:n
matObj.A(k,1:n) = zeros(1,1000);
end
您可以一次添加的每個元素或行,例如使用fprintf
:
A=zeros(10,20);
fid = fopen('test.txt','w');
for ii=1:numel(A)
fprintf(fid, '%f\n', A(ii));
end
fclose(fid);
如果你的文件全部爲零的解決方案是相當簡單:
如果你的矩陣不是全部爲零,問題會更加有趣。希望這是一個相當稀疏矩陣,在這種情況下,這個問題有一些很好的答案:
How can I save a very large MATLAB sparse matrix to a text file?
在阿里納斯,這取決於當你的代碼擁堵,這也可以幫助(和一般它是一個很好的想法):
否則之前你在你的解決方案,VARI需要兩倍的內存
能夠在內存中存儲「A」。我不想在內存中擁有所有的'A'數組。 – ahoo 2013-02-26 03:22:13
這只是一個演示,請閱讀'fprintf'文檔以瞭解如何實現這一點。 – bla 2013-02-26 07:16:38