从许多大型.mat文件中有效地读取和重塑许多矩阵

时间:2013-12-16 18:41:45

标签: matlab

我有近千个带有奇怪名字的.mat文件:

我的第一个问题是运行一个foor循环来打开这样命名的文件:

exp_trial1_0001
exp_trial1_0002
...
exp_trial1_1000

它是4位数的事实让我很难。这不起作用:

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

有1000个.mat文件对应1000次试验。在这些.mat文件的每一个中都有一个矩阵A.矩阵A有500行。我想为每个.mat文件(“试用”)取出所有第1行(和2s,3s,... 500)并将它们放在一个单独的矩阵中。

我无法同时加载所有这些.mat文件,然后执行此操作,因为内存不足。我想知道最有效的方法是什么。

非常感谢!

1 个答案:

答案 0 :(得分: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