我的问题类似于这个问题,但我想要根据一个相同大小的第二个数组中指定的计数来复制每个元素。
例如,假设我有一个数组
到目前为止,我正在使用简单的循环来完成这项工作。这是我开始使用的内容:
例如,假设我有一个数组
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
然而我仍然觉得有更聪明的方法来实现这个...谢谢。