快速填充矢量的连续元素

时间:2016-10-26 08:25:08

标签: matlab vector fill bootstrapping

这是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值需要花费大量时间?

1 个答案:

答案 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;