我的問題與此one類似,但我想根據在相同大小的第二個數組中指定的計數複製每個元素。根據計數的元素明智的陣列複製
這樣的一個例子,說我有一個數組v = [3 1 9 4]
,我想用rep = [2 3 1 5]
複製的第一個元素的2倍,第二三次,等拿到[3 3 1 1 1 9 4 4 4 4 4]
。
到目前爲止,我正在使用一個簡單的循環來完成工作。這是我開始:
vv = [];
for i=1:numel(v)
vv = [vv repmat(v(i),1,rep(i))];
end
我設法通過預先分配的空間來改善:
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
不過,我還是覺得必須有一個更聰明的方式來做到這一點...謝謝
看到http://stackoverflow.com/questions/1975772/matlab-array-manipulation – Doresoom 2010-03-04 20:27:52
@Doresoom:我想我之前已經回答這樣的問題,但無法找到它。我終於在同一時間追捕它。標題和標籤是完全不同的,這使得它有點難以找到。 – gnovice 2010-03-04 20:28:46