我四处搜索并为我的问题找到了一些潜在的解决方案,但一直无法实现代码。
本质上,我有一个包含32 个子文件夹的目录。32 个子文件夹中的每一个都包含4 个文件(.mat,每个文件有1 行和几百万列)。我感兴趣的变量称为数据(参见下面的代码)。
我需要访问子文件夹子集中的所有 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)。然而,当我尝试添加代码以浏览所有文件夹时,我只是覆盖了我拥有的...
我尝试过不同的东西,但在这个阶段很卡。非常欢迎任何帮助。
干杯,大子
正如@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
本文收集自互联网,转载请注明来源。
如有侵权,请联系[email protected] 删除。
我来说两句