Итак, у меня есть папка с тысячами файлов, все файлы имеют системные имена. Я хочу, чтобы пользователь мог выбрать папку, после которой все имена файлов преобразуются из списка (массив ячеек) в какую-то древовидную структуру. Однако реализация того, как хранить это в Matlab, - это то место, где я застреваю. Это то, что я сделал до сих пор:Создать дерево частей строк из списка системных строк (имена файлов)
folder = uigetdir;
files = dir([folder '\*.nii']);
nfiles = length(files);
filez = cell(nfiles, 1);
for file = 1:nfiles
filez(file,:) = cellstr(files(file).name);
end
files = filez;
chars = zeros(nfiles, 1);
for file = 1:nfiles
chars(file) = length(files{file});
end
filez = files;
names = struct;
for file = 1:nfiles
curfil = filez{file};
depth = 0;
for curchar = 1:chars(file)
if curchar == 1
curmatch = strmatch(curfil(1:curchar), filez);
prevmatch = curmatch;
else
prevmatch = curmatch;
curmatch = strmatch(curfil(1:curchar), filez);
end
if length(curmatch) ~= length(prevmatch)
newnamepart = curfil(1:curchar-1);
newstructnamepart = ['X' newnamepart]; %This I did because fieldnames must start with characters
%This is where I dont know how to go on...
end
end
end
Таким образом, для каждого файла я проверяю для каждой части строки от начала имени которого другие имена файлов начинаются с одной и той же строкой. Если это изменение, я возвращаю один символ, и это должен быть мой первый узел в дереве. Однако я не знаю, как создать такое дерево. Мне кажется, что Struct мне больше нравится, но я не уверен, как создать эту структуру, но, может быть, есть другой способ?
Не могли бы вы нарисовать график даже на листе бумаги и опубликовать сканирование? Кроме того, можете ли вы представить простой пример того, как дерево разветвляется на определенные имена файлов? – Oleg