我已经四处搜寻,找到了一些可能解决我问题的方法,但是无法执行代码。
基本上,我有一个目录,其中包含 32个子文件夹。 32个子文件夹中的每个子文件夹中都有 4个文件(。mat文件,每行1行,几百万列)。我感兴趣的变量称为 data (请参见下面的代码)。
我需要访问子文件夹的子集中的所有4个.mat文件,并将它们附加/连接到一个大矩阵中。此外,每个子文件夹中的每4个文件组应在末尾矩阵中彼此相邻。
此外,子文件夹的名称和其中的文件也是已知的:
文件夹= TT1,TT2,等。
文件= TT1ch1,TT1ch2,TT1ch3,TT1ch4; TT2ch1,TT2ch2,TT2ch3,TT2ch4,等。
我还需要在代码中指定实际打开和读取4个文件的子文件夹。并非所有时间都需要阅读。到目前为止,我有这个:
TTs = [1,2,3,4,5]; % List of sub-folders to use.
for i = TTs;
addpath(strcat('TT',num2str(i)));
cd (strcat('TT',num2str(i)));
for w = 1:4; %get data from the 4 files
load(strcat('TT',num2str(i),'ch', num2str(w), '.mat'));
allChs(w,:) = data(1,:); %concatenate into one matrix
end
cd ..
rmpath(strcat('TT',num2str(i)));
end
使用此代码,我可以从给定子文件夹的4个文件中读取数据,并将其复制到新的矩阵(allChs)中。但是,当我尝试添加代码以遍历所有文件夹时,我只会覆盖我所拥有的...
我尝试了不同的方法,但是在这个阶段还很困难。任何帮助都将受到欢迎。
干杯, 大子
答案 0 :(得分:1)
正如@Cris Luengo所说,您无需将路径添加到文件夹中即可从其中读取内容。
此外,您不需要cd
,最好明确显示要从中读取的路径:
parentPath = <your-main-folder>;
TTs = [1,2,3,4,5]; % List of sub-folders to use.
现在,您所需要的只是在移动文件夹时继续行,这样它就不会在下一个子文件夹中被覆盖:
for k = TTs;
for w = 1:4; %get data from the 4 files
load(fullfile(parentPath ,strcat('TT',num2str(i),'ch', num2str(w), '.mat')));
allChs(4*(k-1)+w,:) = data(1,:); %concatenate into one matrix
end
end