2013-12-16 28 views
2

我有近千.MAT文件怪異的名字:閱讀並重塑許多大型.MAT文件很多矩陣高效

我的第一個問題是運行福爾循環打開被命名爲喜歡這樣的文件:

exp_trial1_0001 
exp_trial1_0002 
... 
exp_trial1_1000 

,它是4位數的事實使我很難。這是行不通的:

load(['exp_trial_', num2str(%04i), '.mat']) 

有對應的1000次試驗1000個.MAT文件。在這些.mat文件的每一箇中都有一個矩陣A.矩陣A有500行。我想爲每個.mat文件(「trial」)取出所有行1(和2s,3s,... 500),並將它們放在單獨的矩陣中。

我不能同時加載所有這些.MAT文件,然後做到這一點,因爲我耗盡內存。我想知道最有效的方法是什麼。

非常感謝!

回答

0

我建議沿着這些路線的東西:

N = 100; %// Number of columns of the matrix "A" in the files. Set as needed. 
F = 1000; %// Number of files 
rows = [1 2 3]; %// rows you want to extract from the files 
result = NaN(numel(rows),N,F); %// preallocate 
for ii = 1:F %// iterate over all files 
    load(['exp_trial1_' sprintf('%04d',ii) '.mat'], 'A'); %// load matrix A only 
    result(:,:,ii) = A(rows,:); %// store desired rows from each file 
end 
+0

這似乎並沒有工作。 錯誤LOAD(第8行) 結果(:,:,1)= A(行,:); 我也想保存每一行作爲一個.MAT文件,而不是將它們放在另一個巨大的矩陣。非常感謝! – user3108418

+0

@ user3108418要保存在不同的文件,選擇素只是一個行爲變量'rows',保存'result'在.MAT文件,然後重複每個所需的行 –