将值添加到由数组指定的单元格元素

The*_*ion 3 matlab vectorization

我正在寻找一个矢量化解决方案!

我有两个数组,例如:

idx=[1 1 1 2 2 3 3 4 4 4 5 5 6 7 8 8 8 9 9]; %%//Integers,sorted
val=[1 4 8 2 5 3 9 1 4 8 2 5 6 7 1 4 8 3 9]; %%//respective Values (could be anything)
Run Code Online (Sandbox Code Playgroud)

现在我想创建一个单元格数组,其中包含由其idx相应值指定的元素val.所以结果应该是[9x1] cell:

[1 4 8]
[2 5]
[3 9]
[1 4 8]
[2 5]
[6]
[7]
[1 4 8]
[3 9]
Run Code Online (Sandbox Code Playgroud)

我知道我可以循环从1到9的值并使用horzcat,而idx等于我的循环索引,但我正在寻找一个矢量化的解决方案.原因是,我试图将问题的循环解决方案更改为矢量化解决方案,但我被困在这里

Jon*_*nas 7

用途accumarray:

 out = accumarray(idx(:),val(:),[],@(x){x},{});
Run Code Online (Sandbox Code Playgroud)