Vecorize NORMRND for a family of distributions
3 vues (au cours des 30 derniers jours)
Afficher commentaires plus anciens
Hey everyone!
So, I am looking for a way to speed up my code. I have a large vector of normal distributions (i.e. a vector of means and standard deviations) that I need to generate random numbers from. A generic example of my code looks like this:
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
This code in its current form has an elapsed time of:
Elapsed time is 12.281509 seconds.
I normally try to vectorize most of computationally intensive commands, but right now I am stumped as to how I can make this run faster. I will have to perform this operation multiple times every time that the code is run, so the faster I can make it the better.
Do any of you MATLAB geniuses out there have any thoughts of how to speed this up?
Thanks! John
0 commentaires
Réponse acceptée
Ilya
le 3 Nov 2014
Replace
temp = zeros(length(mu),1);
for i = 1:length(mu)
temp(i) = normrnd(mu(i),sigma(i));
end
with
temp = normrnd(mu,sigma);
Plus de réponses (0)
Voir également
Catégories
En savoir plus sur Numeric Types dans Help Center et File Exchange
Produits
Community Treasure Hunt
Find the treasures in MATLAB Central and discover how the community can help you!
Start Hunting!