Matlab:从索引中获取Cell Array的元素

时间:2013-05-03 12:49:07

标签: arrays matlab validation cell indices

我有一个1x84的单元格数组,我得到交叉验证的索引:

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

给定测试和训练(84或1逻辑数组1或0)如何获得通过test / train索引的所有文件名?

1 个答案:

答案 0 :(得分: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)

请注意,trts都是字符串本身的单元格数组。因此,要访问tr中的第一个字符串,请执行以下操作:

>> tr{1}