Доступ к данным в разных файлах, хранящихся в разных папках - PullRequest
0 голосов
/ 11 ноября 2018

Я искал и нашел некоторые потенциальные решения для моей проблемы, но не смог реализовать код.

По сути, у меня есть один каталог с 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). Тем не менее, когда я пытаюсь добавить код для просмотра всех папок, я просто перезаписываю то, что у меня есть ...

Я пробовал разные вещи, но застрял на этом этапе. Любая помощь будет приветствоваться.

Ура, Oiko

1 Ответ

0 голосов
/ 11 ноября 2018

Как сказал @Cris Luengo, вам не нужно добавлять в путь папку для чтения из нее.

Кроме того, вам не нужно cd, вам лучше указать путь, который вы хотите прочитатьfrom:

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
...