我有一个数组。我对它进行了排序,因此我在初始数组中对已排序元素的数组和缺省进行了排序。
例如,[4 5 4 4 4 4 5 4]
来自[4 4 4 4 4 4 5 5]
和[1 3 4 5 6 8 2 7]
。
如何在单元格数组中放置收到的indeces,以便在一个单元格中将是相等元素的indeces?对于我的示例,它将是:{1 3 4 5 6 8}
,{2 7}
。
我正在寻找非循环方式来解决它。
答案 0 :(得分:2)
使用accumarray
:
x = [4 5 4 4 4 4 5 4]; %// data
[~, ~, jj] = unique(x);
result = accumarray(jj(:), 1:numel(x), [], @(v) {v(:).'});
或者,如果您需要对每组索引进行排序:
result = accumarray(jj(:), 1:numel(x), [], @(v) {sort(v(:)).'});