Meine Frage ähnelt dieser one, aber ich möchte jedes Element nach einer Anzahl replizieren, die in einem zweiten Array der gleichen Größe angegeben ist.Elementweise Array-Replikation nach einer Zählung
Ein Beispiel dafür, sage ich ein Array hatte v = [3 1 9 4]
, ich will rep = [2 3 1 5]
verwenden, um das erste Element 2 mal zu replizieren, die zweiten drei Mal, und so weiter [3 3 1 1 1 9 4 4 4 4 4]
zu bekommen.
Bis jetzt verwende ich eine einfache Schleife, um den Job zu erledigen. Dies ist, was ich begann mit:
vv = [];
for i=1:numel(v)
vv = [vv repmat(v(i),1,rep(i))];
end
ich von preallocating Raum verbessern verwaltet:
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
Allerdings habe ich immer noch das Gefühl, ein cleverer Weg sein muss, dies zu tun ... Danke
siehe http://stackoverflow.com/questions/1975772/matlab-array-manipulation – Doresoom
@Doresoom: Ich dachte, ich, bevor Sie eine Frage wie diese beantwortet hatte, konnte es aber nicht finden. Ich habe es zur gleichen Zeit wie du gejagt.Der Titel und die Tags waren ziemlich unterschiedlich, was es etwas schwierig machte, sie zu finden. – gnovice