Moje pytanie jest podobne do tego one, ale chciałbym replikować każdy element zgodnie z liczbą określoną w drugiej tablicy o tym samym rozmiarze.Replikacja tablic zgodna z elementami według liczby
Przykładem tego, powiedzmy miałem tablicę v = [3 1 9 4]
, chcę użyć rep = [2 3 1 5]
replikować pierwszy element 2 razy, drugi trzy razy, i tak dalej, aby uzyskać [3 3 1 1 1 9 4 4 4 4 4]
.
Do tej pory używam prostej pętli, aby wykonać zadanie. To, co zaczęło się:
vv = [];
for i=1:numel(v)
vv = [vv repmat(v(i),1,rep(i))];
end
udało mi się poprawić przez preallocating przestrzeni:
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
Jednak nadal czuję tam musi być bardziej sprytny sposób to zrobić ... Dzięki
zobaczyć http://stackoverflow.com/questions/1975772/matlab-array-manipulation – Doresoom
@Doresoom: Myślałem, że odpowiedzi na pytanie, jak to już wcześniej, ale nie mógł go znaleźć. W końcu polowałem na to w tym samym czasie co ty.Tytuł i tagi były zupełnie inne, co sprawiło, że było trochę trudniej je znaleźć. – gnovice