Сохранение имен файлов в массив в MATLAB - PullRequest
0 голосов
/ 17 августа 2011

У меня есть набор имен файлов.

Eg: name=apple_class=1A_regis=1.txt 
    name=apple_class=1A_regis=2.txt 
    name=pear_class=1A_regis=1.txt

Я хочу сохранить в массиве все имена файлов с одинаковым 'name = apple_class = 1A'. Это позволит сохранить первые два имени файла в массиве.

Я пытался использовать цикл for, но все еще не могу его получить, так как не знаю, как проверить имена файлов.

Пожалуйста, помогите. Спасибо!

Ответы [ 2 ]

0 голосов
/ 17 августа 2011

Основываясь на ответе @ Itamar Katz , вы должны сохранить имена файлов в подвале строк, применить STRFIND , а затем найти те, которые соответствуют подстроке:

filenames = {
    'name=apple_class=1A_regis=1.txt'
    'name=apple_class=1A_regis=2.txt'
    'name=pear_class=1A_regis=1.txt'
};

idx = strfind(filenames, 'name=apple_class=1A');
idx = find(~cellfun(@isempty,idx));

Имена файлов, которые соответствуют:

>> result = filenames(idx)
result = 
    'name=apple_class=1A_regis=1.txt'
    'name=apple_class=1A_regis=2.txt'
0 голосов
/ 17 августа 2011

Используйте strfind, который возвращает индекс, с которого начинается искомая подстрока, внутри искомой строки. Если результат не пустой, строка существует. В этом примере я сравниваю индекс с 1, а не просто проверяю, не пустой ли он, чтобы соответствовать вашему примеру:

fileName = 'name=apple_class=1A_regis=1.txt';
k = strfind (fileName, 'name=apple_class=1A');
if k==1
   % do something
end
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...