<分区>
我的问题与此类似one ,但我想根据相同大小的第二个数组中指定的计数复制每个元素。
举个例子,假设我有一个数组 v = [3 1 9 4]
,我想使用 rep = [2 3 1 5]
来复制第一个元素 2 次,第二个元素 3 次,依此类推得到 [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
但是我仍然觉得必须有更聪明的方法来做到这一点......谢谢