matlab - 将向量的索引转换为其内容,反之亦然

标签 matlab vector indexing octave

我正在寻找一种有效的方法来转动矢量:

[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))})

但是下次,请在你的问题中展示你自己的尝试

或者(但前提是 A1 开始并且不跳过任何数字)

accumarray(A', (1:size(A,2))', [], @(x){sort(x)})

关于matlab - 将向量的索引转换为其内容,反之亦然,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/37179576/

相关文章:

c++ - 比较 vector 迭代器和整数

java - 对大 vector 进行排序的快速方法

c++ - 迭代器在C++内部如何工作?

python - Pandas DataFrame 索引属于一个集合

indexing - 有没有快速的解决方案来从 Node.js 查询 Lucene 索引?

matlab - 如何根据向量矩阵的顺序对单元格数组列重新排序,同时在 Matlab 中保持行的完整性?

matlab - 将矩阵限制在指定值内的有效方法

r - R 中的压缩或枚举?

matlab - 如何更改图例的顺序

matlab - MATLAB 问题中的 Parfor