MATLAB: Generate matrix of a random process with each row using different parameters and no for-loop

matrixno for loopno looprandom

For example, suppose I want to generate 5 different normally distributed vectors with 10 samples each. The first vector will have a mu = 0, sigma = 1, the second a mu = 5, sigma = 3, etc. What I would like to be able to do would be something like the following code:
mu = [0, 3, 2, 5, 1]; sigma = [1, 5, 4, 10, 7]; myDistributions = random('norm', mu, sigma, [5, 10]);
and have it output a 5-by-10 matrix with the first row using parameters mu = 0, sigma = 1; the second row using parameters mu = 3, sigma = 5. etc.
I suspect I'll have to bite the bullet and just use a for-loop if I want to do this, but I'm hoping I've missed something else that can be done for this sort of thing.

Best Answer

You can use arrayfun for this:
mu = [0, 3, 2, 5, 1];
sigma = [1, 5, 4, 10, 7];
A = arrayfun(@(x,y) random('norm', x, y, [1, 10]),mu,sigma,'UniformOutput',false)
% Change from a cell to a matrix:
A = cell2mat(A);