2013-05-03 3 views
0

У меня есть массив 1x84 клеток, что я получаю индексы для перекрестной проверки:Matlab: Получить элементы клеточного массива из индексов

indices = crossvalind('Kfold',length(filenames),k_fold); 
for i = 1:k_fold 
    test = (indices == i); 
    train = ~test; 

Данный тест и поезда (84x1 логические массивы 1 или 0) Как я получить все имена файлов, которые индексируются с помощью теста/поезда?

+2

'имена файлов (тест) и' имена файлов (поезд) '? – Dan

+0

Если у вас есть массив ячеек, чем имена файлов {test}/filenames {train} (с фигурными скобками) –

ответ

0

Вы можете применить логическую индексацию к массиву ячеек для ее среза. Вот упрощенный пример:

%# create a cell array of string 
C = cellstr(num2str((1:5)', 'file %d')); 

%# random split 
trainIdx = rand(size(C)) > 0.5; 
testIdx = ~trainIdx; 

%# slice cell array 
tr = C(trainIdx) 
ts = C(testIdx) 

Обратите внимание, что оба tr и ts клеточных массивы самих строк. Таким образом, чтобы получить доступ к первой строке в tr, вы делаете:

>> tr{1}