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
现在是一行,而不是一列。而且,这几乎肯定比内存分配的循环要慢,因为计算匿名函数的速度很慢。。同样感谢您的警告。也许它更紧凑,但运行肯定需要更长的时间。