这是Matlab中的块引导代码,用于以随机顺序生成日期块。首先,随机向量由块的起始元素组成,并且首先遵循bei 11个零。随机值表示日期向量的元素。
randVector(1:12:253,:) = ceil(252*rand(ceil(253/12),nmbBootstrap));
for循环现在应该将连续元素填充到下一个现有值。
for ii = 1:12-1
randVector(1+ii:12:253,:) = mod(randVector(ii:12:252,:),252)+1;
end
最后将随机向量转换为实际日期
randDates = dates(randVector(1:end-1,:));
如何使用矢量化替换for循环,因为使用大的nmbBootstrap值需要花费大量时间?
答案 0 :(得分: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;