Ma question est similaire à cette one, mais je voudrais répliquer chaque élément en fonction d'un nombre spécifié dans un second tableau de la même taille.Réplication de tableau par élément en fonction d'un nombre
Un exemple de cela, dire que j'avais un tableau v = [3 1 9 4]
, je veux utiliser rep = [2 3 1 5]
pour reproduire le premier élément 2 fois, trois fois deuxième, et ainsi de suite pour obtenir [3 3 1 1 1 9 4 4 4 4 4]
. Jusqu'à présent, j'utilise une simple boucle pour faire le travail. C'est ce que j'ai commencé avec:
vv = [];
for i=1:numel(v)
vv = [vv repmat(v(i),1,rep(i))];
end
J'ai réussi à améliorer l'espace par préallocation:
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
Cependant, je pense toujours qu'il doit y avoir un moyen de faire plus intelligent cette ... Merci
voir http://stackoverflow.com/questions/1975772/matlab-array-manipulation – Doresoom
@Doresoom: Je pensais avoir répondu à une question comme ça avant, mais n'a pas pu le trouver. Je l'ai finalement traqué en même temps que toi.Le titre et les tags étaient très différents, ce qui était un peu difficile à trouver. – gnovice