我的问题与这个问题类似,但我想根据在第二个相同大小的数组中指定的计数来复制每个元素。
举个例子,假设我有一个数组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
但是我仍然觉得必须有一个更聪明的方法来做到这一点......谢谢