2015-07-15 2 views
1

Я работаю над проектом, в котором я получаю данные от другого аспиранта, и мне нужно перебирать каждое имя файла и запускать на нем быстрый фрагмент кода. Проблема в том, что имена файлов, которые я получил, имеют временную метку в имени файла, и файлы не создавались с целыми кратными секундами. Мой псевдокод:Итерация через временную метку в имени файла

for fileindex = 1:250; 

    filename = '/pathname/data_', fileindex, '.mat'; 
    load(filename); %785 x 32 x 921 

    for index1 = 1:32; 
     for index2 = 1:921; 
      Run code here; 
     end 
    end 
end 

Так что у меня все это выпрямлены, за исключением того, метка времени находится в середине имени файла. В качестве примера, вот первые несколько имен файлов:

scan1_20150507_224251_00001.mat

scan1_20150507_224252_00002.mat

scan1_20150507_224252_00003.mat

scan1_20150507_224253_00004.mat

scan1_20150507_224254_00005.mat

scan1_20150507_224254_00006.mat

scan1_20150507_224255_00007.mat

В несколько раз, есть 2 файлов в секунду, а в другое время, есть всего лишь 1 или больше, чем 4. У меня есть 250 файлов на данный момент, и на полном наборе данных I У меня будет около 7500 файлов, поэтому я не могу выполнить и вручную изменить все имена файлов. У кого-нибудь есть предложения?

ответ

2

Вместо того, чтобы вручную создавать имя файла и считывать его, может быть разумно просто поместить все файлы в один каталог и запросить все файлы в этом каталоге. Тогда у вас будет структура всех возможных файлов в каталоге, и вы можете перебирать эти имена.

Таким образом, вы избегаете учета недостатков в строке времени, и у вас будет доступ к всем файлам одновременно, вместо того чтобы пытаться учесть недостающие данные. В этом случае вы будете смотреть на него на уровне файлов, а не на уровне приобретения.

Использование dir в дополнение к fullfile должно работать отлично. dir запросы к файлам в каталоге и fullfile помогут вам восстановить правильный путь с помощью операторов правой косой черты, чтобы быть работоспособным системным агностиком.

ли что-то вроде этого:

folder = fullfile('path', 'to', 'folder'); %// Replace by your folder 
f = dir(fullfile(folder, '*.mat')); % // Look for the files 

for idx = 1 : numel(f) %// For each file 

    filename = fullfile(folder, f(idx).name); %// Get the file name 
    load(filename); %// Load the file 

    for index1 = 1:32; 
     for index2 = 1:921; 
      %//Run code here; 
     end 
    end 
end 

Для каждой папки, разделенных косой чертой, которая будет служить в качестве отдельной строки в fullfile. Помните об этом при изменении первой строки кода.

+1

Просто попробовал ваше предложение, и он отлично работает. Я не знал, что это может быть сделано каталогом, а не файловым. Спасибо! –

+0

@AndrewM. - Да! ... Одна из вещей, которые я узнал в конце концов. Рад, что смог помочь! Удачи! – rayryeng

Смежные вопросы