2016-05-23 4 views
-2

Я проектирования графического интерфейса в Matlab,Как получить структуру имен файлов в папке в Matlab

У меня есть папка под названием sth. Он содержит много файлов, имеющих такую ​​же структуру, как,

filename_1_something.mat 
filename_2_something.mat 

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

filename_%d_something.mat 

Поэтому мне не нужно читать все файлы в каталоге. Двое из файлов достаточно, чтобы сравнить строки и найти другой элемент массива char и изменить на %d.

Или что-то другое, чем это также оценили.

+0

В чем вопрос? – rock321987

+0

Ха-ха, я спрашиваю, как я могу найти желаемый шаблон файла из существующих не более 100 имен файлов внутри папки. – freezer

+0

используйте это регулярное выражение: - 'filename_ \ d + _something.mat' для сравнения имени файла – rock321987

ответ

1

с использованием регулярных выражений, представленных @ rock321987 -

names = dir('*.mat'); 
num = length(names); 
expression = '\w*_\d+_\w*\.mat'; 
for n = 1:num 
    str = names(n).name; 
    nameList{n} = regexp(str,expression,'match') 
end 

работы по:

test_1_something.mat 
test_10_something.mat 

изменение регулярного выражения просто \w*_\w*\.mat

работы для

test_1.mat 
1_test.mat 
test_1_something.mat 
test_10_something.mat 

но также работает для чего-либо со строкой, соединенной символом подчеркивания .mat

+0

Спасибо, но мне нужно что-то, чтобы заменить цифры на строку% d two char. Я попробовал несколько выражений и придумал рабочий. Надеюсь, ошибок не будет. regexprep ('test_100_something.mat', '(\ ш * _ | ^) (\ d +) (_ \ ш * \ коврик).', '$ 1% d $ 3'); – freezer

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