matlab - 来自具有组中元素数量的向量的组索引向量

标签 matlab run-length-encoding

我想创建一个向量,其中包含每个元素的组标识符,该向量来自包含每个组中元素数量的向量。

示例:

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/

相关文章:

matlab - 如何获得 Matlab 或 Octave 中所有已定义变量的列表?

debugging - 查找在复杂程序中创建命令行输出的位置

matlab - 不同维数矩阵的前扫Matlab

haskell - 组合学:圣彼得博弈算法

matlab - 向量的重复元素

matlab从带间隙的向量生成矩阵

c - 打印正确数量的相同字符时出现问题。C 中的 RLE

arrays - Kadane 的算法是否适用于运行长度编码的整数数组?

C中的压缩程序

matlab - 在不指定列数的情况下将文本文件加载为二维字符串数组