我正在寻找一种转换矢量的有效方法:
[1,1,1,2,3,3,3,4,4,4,5,1]
进入矢量矢量,以便:
[[1,2,3,12],[4],[5,6,7],[8,9,10],[11]]
一般来说:
newVector[i] = indexes of the initial vector that contained i
最好是在Matlab / Octave中,但我很好奇是否有一种有效的方法来实现这一点。
我尝试在谷歌和堆栈上查找它,但我不知道该怎么称呼这个'操作'所以没有出现。
答案 0 :(得分:5)
使用A = [1,1,1,2,3,3,3,4,4,4,5,1]
accumarray(A',A',[],@(x){find(ismember(A,x))})
A
但下次,请在您的问题中展示自己的尝试
或者(但仅当1
从accumarray(A', (1:size(A,2))', [], @(x){sort(x)})
开始并且不跳过任何数字时)
<div>