有的5億X 5.MATLAB數據文件時,它接管其存儲器
基質和該數據的樣本是這樣的:
1 01 06:0 48407 1 01 06:1 48407 。 。 。 865850 31 23:5 1586884493
每一列手段[area_number日時:分amount_of_data]
欲完全加載它們,之後從它們的第五列中的值進行另一個865850 X 4464矩陣。在這個新的矩陣中,行堅持area_number。根據時間優先級,每列表示amout_of_data。
這就是我寫的。
clear all; close all;
fileID=fopen('data2.txt','r');
Data=fscanf(fileID, '%d %d %d:%d %d',[5 100000]);
Data = Data';
Zeros = zeros(4000, 4464);
DataA = Data(:,1); % indexs
DataB = Data(:,2); % dates
DataC = Data(:,3); % hours
DataD = Data(:,4); % minutes
DataE = Data(:,5); % data
for m=1:40000
r = DataA(m);
c = (DataB(m)-1)*24*6 + DataC(m)*6 + DataD(m);
Zeros(r,c) = DataE(m);
end
我無法完成它,因爲矩陣太大而無法一次加載它。 它超出了MATLAB的內存限制。
請幫我...
謝謝〜!
這就是很多數據(47GiB)。您必須以較小的塊處理它,並將每個塊的結果寫入文件系統。 – Daniel 2015-04-05 08:35:08
非常感謝〜但是我怎樣才能隔離塊並保存結果呢? – 2015-04-06 12:25:57
您如何在'data2.txt'中訂購數據? – Daniel 2015-04-06 13:31:21