我想创建一个向量,其中包含每个元素的组标识符,该向量来自包含每个组中元素数量的向量。
示例:
E = [2 3 4]'
我正在寻找如下向量:
I = [1 1 2 2 2 3 3 3 3]
我找到了一个涉及循环的解决方案:
I = [];
for e=1:size(E,1),
I = [I ; e*ones(E(e),1)];
end
但这看起来不太优雅。欢迎提出任何改进建议。
最佳答案
您正在寻找run length decoding .
试试这个
n = sum( E ); %// tot number of elelments
I = zeros( 1, n ); % //preallocate!
I(cumsum( [ 1 E(1:end-1) ] ) ) = 1;
I = cumsum( I )
查看运行示例 ideone .
关于matlab - 来自具有组中元素数量的向量的组索引向量,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/25177965/