我正在寻找一个矢量化的解决方案!
例如,我有两个数组:
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)现在,我想创建一个单元格数组,它在idx指定的元素中包含val的相应值。因此,结果应该是一个具有:
[1 4 8]
[2 5]
[3 9]
[1 4 8]
[2 5]
[6]
[7]
[1 4 8]
[3 9]我知道我可以循环从1到9的值,并在idx等于循环索引的时候使用horzcat,但是我正在寻找向量化的解决方案。原因是,我试图将一个问题的循环解改为向量化的解,但我却被困在这里。
发布于 2014-08-19 09:27:37
使用accumarray
out = accumarray(idx(:),val(:),[],@(x){x},{});发布于 2014-08-19 09:28:00
mat2cell(val,1,diff([0,find(diff(idx)),numel(idx)]))也许有人找到了摆脱find的可能性,那么它可能会更快。
https://stackoverflow.com/questions/25379773
复制相似问题