1
のベクトルの速い作成は、私は、変数distr=[0 3 1 0 2];
を持っている、と私はすべてのi
ため、distr(i)
回i
をcontrainすべき変数full
を持っています。この例ではMATLAB:インデックス
、私はしたい:
full=[2 2 2 3 5 5];
ので3倍2
、というように、distr(2)=3
ので。
for
-loopでそれを行うことができます。もちろん、
:
full=zeros([1,sum(distr)]);
cc=1;
for i=1:length(distr)
curr=distr(i);
full(cc:cc+curr-1)=i*ones([1,curr]);
cc=cc+curr;
end
が、それは非常に遅いです。 MATLABの優れた配列指向のスタイルを使って、高速な方法を知っていますか?ありがとう!
__run-length decoding__が必要です。次のように 'repelem'を使います:' result = repeatlem(1:numel(distr)、distr); '。または、他のアプローチについてのリンクされた質問と回答を参照してください。 –
ああ、それは正しい名前です、私はこのプロパティを呼び出す方法を知らなかったので、結果を見つけることができませんでした。ありがとう、それは、特にパフォーマンステストに役立ちます! – NicoDean