Replicazione array basata su elementi in base a un conteggio

La mia domanda è simile a questa, ma mi piacerebbe replicare ogni elemento in base a un conteggio specificato in un secondo array della stessa dimensione.

Un esempio di questo, diciamo che avevo un array v = [3 1 9 4] , voglio usare rep = [2 3 1 5] per replicare il primo elemento 2 volte, il secondo tre volte, e così via per ottenere [3 3 1 1 1 9 4 4 4 4 4] .

Finora sto usando un semplice ciclo per portare a termine il lavoro. Questo è quello che ho iniziato con:

 vv = []; for i=1:numel(v) vv = [vv repmat(v(i),1,rep(i))]; end 

Sono riuscito a migliorare preallocando lo spazio:

 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 

Tuttavia sento ancora che ci deve essere un modo più intelligente per farlo … Grazie