我想从包含每个组中元素数量的 vector 中创建一个包含每个元素的组标识符的 vector 。
例:
E = [2 3 4]'
我正在寻找一个 vector ,如下所示:
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/