2013-02-13 5 views
1

Я хотел бы получить список всех файлов в каталогеMatlab: выбрать элементы вектора условно

d=dir(pwd); # get a struct of all elements (including folders) 

Теперь я хотел бы, чтобы выбрать все элементы из d.name, где d.isfolder = 0

jj=1; 
for ii=1:numel(d) 
    if d(ii).isdir==0 
    filelist{jj} = d(ii).name; 
    jj+1; 
    end 
end 

Возможно ли это без петли? Я думаю, что следует по пути векторизовать эту операцию

Я работаю с Matlab/октава

ответ

2

Нет необходимости использовать цикл, вы можете сделать это с помощью индексации

isDirIdx = [d.isdir]; 
names = {d.name}; 
fileNames = names(~isDirIdx); 
+0

мне нужен список файлов, а не папки isFileIdx = [d.isdir] == 0; names = {d.name}; FileNames = names (isFileIdx); – telemachos

+1

@telemachos, извините за то. Я исправил код – slayton

+0

, спасибо, ваше решение еще приятнее, чем мое. – telemachos

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