我正在寻找一种有效的方法来转动矢量:
[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 中,但我很好奇是否有一种有效的方法来实现这一点。
我试着在谷歌和堆栈上查找它,但我不知道如何称呼这个“操作”,所以没有任何结果。
最佳答案
使用 accumarray
有一种简单的方法可以做到这一点
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)})
关于matlab - 将向量的索引转换为其内容,反之亦然,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/37179576/