Matlab 向量化索引集构建

Matlab 向量化索引集构建,matlab,vectorization,Matlab,Vectorization,我需要建立一个索引单元格数组。每个单元格包含与以下代码中唯一值ori对应的所有索引: oriVals = unique(ori); oriIndicies = cell(numel(oriVals), 1); for kOri = 1:numel(oriVals) oriIndicies{kOri} = find(ori == oriVals(kOri)); end 我可以用MATLAB的本机函数更简洁地编写它吗?我只想在写我自己的之前确保没有任何问题。而不是: oriIndicies

我需要建立一个索引单元格数组。每个单元格包含与以下代码中唯一值
ori
对应的所有索引:

oriVals = unique(ori);
oriIndicies = cell(numel(oriVals), 1);
for kOri = 1:numel(oriVals)
    oriIndicies{kOri} = find(ori == oriVals(kOri));
end
我可以用MATLAB的本机函数更简洁地编写它吗?我只想在写我自己的之前确保没有任何问题。

而不是:

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
现在是一行,而不是一列。而且,这几乎肯定比内存分配的
循环要慢,因为计算匿名函数的速度很慢。

。同样感谢您的警告。也许它更紧凑,但运行肯定需要更长的时间。