所以,我正在寻找一种方法来加速我的代码。我有一个正常分布的大向量(即平均值和标准差的向量),我需要从中生成随机数。我的代码的一般示例如下所示:
tic
N=1e6;
mu = rand(N,1);
sigma = rand(N,1);
temp = zeros(length(mu),1);
for i = 1:length(mu)
temp(i) = normrnd(mu(i),sigma(i));
end
toc
此代码的当前形式的已用时间为:
Elapsed time is 12.281509 seconds.
我通常会尝试对大多数计算密集型命令进行矢量化,但是现在我很难知道如何让它运行得更快。每次运行代码时,我都必须多次执行此操作,因此我可以更快地完成此操作。
你们这些MATLAB天才有没有想过如何加快这一点?
谢谢!约翰
答案 0 :(得分:2)
入侵normrnd.m
以获取此自定义代码,该代码必须复制问题中描述的功能 -
N=1e6;
mu = rand(N,1);
sigma = rand(N,1);
temp = randn(size(sigma)).*sigma + mu;
在我的系统上,运行时从18.946094 seconds
减少到0.037229 seconds
。
希望这对你有用!