将相等元素放在单元格数组中

时间:2014-03-15 16:00:32

标签: arrays matlab sorting cell-array

我有一个数组。我对它进行了排序,因此我在初始数组中对已排序元素的数组和缺省进行了排序。

例如,[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}

我正在寻找非循环方式来解决它。

1 个答案:

答案 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(:)).'});