访问存储在不同文件夹中的不同文件中的数据

时间:2018-11-11 12:41:04

标签: matlab for-loop signal-processing

我已经四处搜寻,找到了一些可能解决我问题的方法,但是无法执行代码。

基本上,我有一个目录,其中包含 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)中。但是,当我尝试添加代码以遍历所有文件夹时,我只会覆盖我所拥有的...

我尝试了不同的方法,但是在这个阶段还很困难。任何帮助都将受到欢迎。

干杯, 大子

1 个答案:

答案 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
相关问题