Mi pregunta es similar a esta one, pero me gustaría replicar cada elemento según un recuento especificado en una segunda matriz del mismo tamaño.Replicación de matriz a nivel de elemento según un recuento
Un ejemplo de esto, decir que he tenido una serie v = [3 1 9 4]
, quiero usar rep = [2 3 1 5]
replicar el primer elemento 2 veces, los segundos tres veces, y así sucesivamente para obtener [3 3 1 1 1 9 4 4 4 4 4]
.
Hasta ahora estoy usando un bucle simple para hacer el trabajo. Esto es lo que empecé con:
vv = [];
for i=1:numel(v)
vv = [vv repmat(v(i),1,rep(i))];
end
logré mejorar por preasignar espacio:
vv = zeros(1,sum(rep));
c = cumsum([1 rep]);
for i=1:numel(v)
vv(c(i):c(i)+rep(i)-1) = repmat(v(i),1,rep(i));
end
Sin embargo todavía siento que tiene que haber una manera más inteligente para hacer esto ... Gracias
ver http://stackoverflow.com/questions/1975772/matlab-array-manipulation – Doresoom
@Doresoom: pensé que había respondido a una pregunta como esto antes, pero no pudo encontrarlo. Finalmente lo busqué al mismo tiempo que tú.El título y las etiquetas eran bastante diferentes, que fue lo que lo hizo un poco difícil de encontrar. – gnovice