我需要构建索引的单元格数组。每个单元格包含与以下代码中的唯一值ori
对应的所有索引:
oriVals = unique(ori);
oriIndicies = cell(numel(oriVals), 1);
for kOri = 1:numel(oriVals)
oriIndicies{kOri} = find(ori == oriVals(kOri));
end
我可以用MATLAB的原生函数更紧凑地编写吗?在我自己编写之前,我只想确保没有任何内容。
答案 0 :(得分:1)
而不是:
oriIndicies = cell(numel(oriVals), 1);
for kOri = 1:numel(oriVals)
oriIndicies{kOri} = find(ori == oriVals(kOri));
end
你可以写:
oriIndicies = arrayfun(@(x) find(ori == x), oriVals, 'UniformOutput', false);
但请注意,oriIndicies
现在是一行,而不是一列。此外,这几乎肯定比具有内存分配的for
循环慢,因为评估匿名函数的速度很慢。