2

考虑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 
.    .     .

任何非循环的想法?

4

1 回答 1

6

似乎您正在寻找运行长度解码:这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
于 2014-07-01T05:37:14.603 回答