2016-10-26 5 views
0

これは、ランダムな順序で日付のブロックを生成するために使用されるMatlabのブロックブートストラップコードです。最初に、ランダムベクトルはブロックの開始要素から構成され、最初にbei 11のゼロに従います。ランダムな値は、日付ベクトルの要素を表します。ベクトルの連続した要素を高速に埋め込む

randVector(1:12:253,:) = ceil(252*rand(ceil(253/12),nmbBootstrap)); 

forループは、次の既存の値まで連続した要素を埋めるようになりました。大きなnmbBootstrap値を使用している場合、それは多くの時間を要するため

for ii = 1:12-1 
    randVector(1+ii:12:253,:) = mod(randVector(ii:12:252,:),252)+1; 
end 

最後に、ループのベクトル化によって置き換えることができますどのように実際の日付

randDates = dates(randVector(1:end-1,:)); 

にランダムなベクトルを変換しますか?

答えて

0

ループの反復回数が少ないため、ベクトル化はこの場合大きな利点を提供しません。方法がそれだけ繰り返される可能性があります。

nmbBootstrap = 50000; 
randVector = rectpulse(ceil(252*rand(ceil(253/12),nmbBootstrap)),12); 
additive = repmat((0:11)',ceil(253/12),nmbBootstrap); 
randVector = mod(randVector + additive-1,252)+1; 
関連する問題