Matlab 分组数组元素

Matlab 分组数组元素,matlab,Matlab,我有下面的MATLAB代码 out = cell(max(A), 1); for i = 1:numel(out) out{i} = find(A == i); end 其中A包含1:max(A)中的所有条目,顺序不同,可能重复。在代码片段的末尾,out{i}包含i出现在A中的索引。问题是-是否可以“矢量化”上述内容,而不是进行循环?我相信accumarray可以做到这一点,但我不知道具体是如何做到的。看来我找到了答案 out = accumarray(A, 1:max(A), [],

我有下面的MATLAB代码

out = cell(max(A), 1);
for i = 1:numel(out)
    out{i} = find(A == i);
end

其中
A
包含
1:max(A)
中的所有条目,顺序不同,可能重复。在代码片段的末尾,
out{i}
包含
i
出现在
A
中的索引。问题是-是否可以“矢量化”上述内容,而不是进行循环?我相信accumarray可以做到这一点,但我不知道具体是如何做到的。

看来我找到了答案

out = accumarray(A, 1:max(A), [], @(x) {x})

看来我想出了答案

out = accumarray(A, 1:max(A), [], @(x) {x})

我假设的第三个输出为您提供了所需的内容。unique的第三个输出不会将相等项的索引分组到单元格数组中。为什么需要将它们分组到单元格数组中?因为这是第三方函数的输入,我没有编写,也不打算更改。我假设的第三个输出为您提供你在寻找什么。unique的第三个输出没有将相等项的索引分组到单元格数组中。为什么需要将它们分组到单元格数组中?因为它是第三方函数的输入,我没有编写,也不打算更改。