Я хочу иметь список всех полных подпапок. Список не должен содержать родительскую папку.matlab: список всех уникальных подпапок
я получить список директорий с помощью
dirs = regexp(genpath(basePath),['[^;]*'],'match');
Однако, что функции очень медленно. Вероятно, потому что мои папки содержат тысячи файлов.
Устранение папок родительских папок выполняется следующим образом: есть ли возможность оптимизировать это с точки зрения размера и скорости кода?
function [ ListOfDirs ] = findsubfolders(basePath)
dirs = regexp(genpath(basePath),['[^;]*'],'match');
index = 0;
for k = 1:numel(dirs)
currFolder = dirs{k};
if numel(strrep(currFolder, basePath,'')) ~= 0
if isempty(strfind(currFolder, 'remove'))
index = index + 1;
selectedDirs{index} = currFolder;
end
end
end
dirs = selectedDirs;
idx = 0;
for k = 1:numel(dirs)
currFolder = dirs{k};
isNotParentFolder = false;
for s = 1:numel(dirs)
if s ~= k
compFolder = dirs{s};
if numel(strrep(strrep(currFolder, compFolder,''),currFolder,'')) ~= 0
isNotParentFolder = true;
end
end
if isNotParentFolder
idx = idx + 1;
ListOfDirs{idx} = currFolder;
break;
end
end
end
end
Вы пробовали http://www.mathworks.co.uk/matlabcentral/fileexchange/41135-folders-sub-folders или http://www.mathworks.co.uk/matlabcentral/fileexchange/1492 -subdir новый? – am304
Подход «genpath» (и другие предложения?) В основном рекурсивно вызывается 'dir'. Известно, что это довольно медленно (для сетевых дисков?). Возможно, это может помочь: http://stackoverflow.com/questions/6385531/very-slow-dir-in-matlab –