2015-01-05 2 views
0

У меня есть несколько папок, каждый из которых называется последовательно, то есть Center Left P1, Center Left P2 и т. Д. В каждой папке у меня есть 38 «.dat» файлов, которые содержат данные, которые я хочу для анализа. Возможно ли создать скрипт Matlab, который откроет каждую папку и извлечет файлы «.dat»? Извините, что я относительно новичок в Matlab, и ранее я вручную назвал каждый файл в Matlab, чтобы получить нужные мне данные. Но в этом случае это займет слишком много времени. С уважением, JerryИзвлечь данные из разных папок, которые названы последовательно

ответ

1

Команда dir и команды fullfile для этой цели.

myData = cell(1,numFolders); 
for p=1:numFolders 
    folderName = sprintf('Center Left P%d', p); % current folder name 
    %// working with relative paths. If abs paths are used, remove leading '.' 
    datFiles = dir(fullfile('.', folderName, '*.dat')); %// should return a list of all dat files in specific folder 
    myData{p} = cell(1, numel(datFiles)); 
    for di=1:numel(datFiles) 
     myData{p}{di} = importdata(fullfile('.', folderName, datFiles(di).name)); %// read data 
    end 
end 
+0

Извините, что забыл упомянуть, что в каждой папке под названием 0.66D есть подпапка. Т.е. дерево папок выглядит так: «Center Left P1» - «0.66D», тогда файлы 38.dat. Как включить второй подфлот. Извините за неудобство. – Jerry

+0

@Jerry просто изменит аргумент для команды 'dir', которая читает файлы' dat'. Прочитайте документ на 'dir' и' fullfile', вся информация, в которой вы нуждаетесь, есть. – Shai

+0

Привет, Шай, я использовал следующий код. Он загружает файлы .dat из первой папки, но не загружает их из других подпапок. Есть идеи? 'clear clc для n = 1:20 foldername = sprintf ('G: \\ Protable Hard Drive \\ PHD Hard Drive \\ Экспериментальные данные \\ Bulkrename Trial \\ Свободный прогон \\ Центр Left P% d \\ 0,66D ', n); datFiles = dir (fullfile ('.', Foldername, '* .dat')); files = dir ('*. Dat'); для i = 1: длина (файлы) eval (['load' files (i) .name '-ascii']); конец конец' – Jerry