考虑 A = [ 200000 x 1]
向量。我有另一个向量idx = [200000x1]
。我想平铺A
,使得A的每个ith<
元素都平铺idx(i)
次。
例如:
A idx output
2 2 2
3 1 2
4 3 3
5 1 4
. . 4
. . 4
. . 5
. . .
有什么非循环的想法吗?
最佳答案
您似乎正在寻找 run length decoding :即 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
关于matlab - 以独特的方式平铺向量 MATLAB,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/24503014/