eni*_*mae 2 matlab tiling vectorization run-length-encoding
考虑A = [ 200000 x 1]矢量.我有另一个矢量idx = [200000x1].我想平铺A这样ithA的每个元素都是平铺idx(i)时间.
例如:
A idx output
2 2 2
3 1 2
4 3 3
5 1 4
. . 4
. . 4
. . 5
. . .
Run Code Online (Sandbox Code Playgroud)
任何非循环的想法?
看起来你正在寻找行程长度解码:这idx(ii)表示编码输出中应该存在的长度 A(ii).
这是在Matlab中做到这一点的好方法:
output = zeros(1, sum(idx)); % allocate output
output( cumsum( [1 idx(1:end-1)] ) ) = 1;
output = A( cumsum( output ) );
output =
2 2 3 4 4 4 5
Run Code Online (Sandbox Code Playgroud)