私の質問はこれに似ていますが、同じサイズの2番目の配列で指定されたカウントに従って各要素を複製したいと思います。
この例として、配列がある場合、最初の要素を2回複製し、次の要素を3回複製するv = [3 1 9 4]
ために使用したい、というように取得します。rep = [2 3 1 5]
[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
しかし、私はまだこれを行うためのより賢い方法が必要だと感じています...ありがとう