index = [10 100 1000 10000 100000]
让我们说我想生成10, 100,...,100000
(对应于上面的索引)带有参数1/10
的指数随机变量。我当然使用for
循环并使用命令
x = exprnd(0.1,100,1)
还可以使用
从均匀随机变量生成指数随机变量x = -10*log(u)
在这种方法中,我首先生成均匀随机变量,然后将矢量u
插入前一个等式中。这种方法在计算时间方面更快。
我如何加快这个过程?我可以用矢量化来做,也就是说,没有for循环吗?
答案 0 :(得分:0)
我将创建一个长度为sum(index)
的长向量,然后将其划分为我想要的不同大小。
这将是最快的方式。
答案 1 :(得分:0)
试试这个:
expFun = @(size)exprnd(0.1,size,1);
index = [10 20 30 40];
data = cellfun(expFun,mat2cell(index,ones(size(index,1),1),ones(1,size(index,2))),'UniformOutput',false);