Черепица вектор уникальным способом MATLAB
Рассматривать A = [ 200000 x 1]
вектор. У меня есть другой вектор idx = [200000x1]
, Я хотел бы плитку A
так что каждый ith
элемент А плиточный idx(i)
раз.
Например:
A idx output
2 2 2
3 1 2
4 3 3
5 1 4
. . 4
. . 4
. . 5
. . .
Любые нецикличные идеи?
1 ответ
Решение
Похоже, вы ищете для декодирования длины пробега: это 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