我想从包含每个组中元素数量的 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/

10-11 17:18