# How to generate bivariate random normally distributed 3d array?

5 views (last 30 days)

Show older comments

Nainsi Gupta
on 31 May 2023

Commented: Nainsi Gupta
on 1 Jun 2023

mu= [0 0]

sigma= [1 0.25; .25 1]

mvnrnd(mu,sigma,100)

I want to generate a 3-by-2-by-100 array which is normally distributed with given mu and sigma. Please help me how can I do this?

##### 5 Comments

John D'Errico
on 31 May 2023

### Accepted Answer

John D'Errico
on 31 May 2023

Edited: John D'Errico
on 31 May 2023

Um, trivial?

You apparently want to generate 300 samples of a bivariate normal. So generate them as a 300x2 array, Then reshape and permute them into the desired 3x2x100 array.

mu= [0 0];

sigma= [1 0.25; .25 1];

X = mvnrnd(mu,sigma,300);

X = reshape(X,[3,100,2]);

X = permute(X,[1 3 2]);

size(X)

##### 3 Comments

John D'Errico
on 31 May 2023

Permute is like transpose. But it applies to arrays of multiple dimensions.

Look at what I did.

mu= [0 0];

sigma= [1 0.25; .25 1];

X = mvnrnd(mu,sigma,300);

What is the initial size of X?

size(X)

I generated 300 samples of bivariate random numbers with the desired distribution. What did reshape do?

X = reshape(X,[3,100,2]);

size(X)

So I simply reshaped that into an array of 3x100 instances of the same random numbers. FInally, the call to permute does nothing more than transpose the second and third dimensions.

X = permute(X,[1 3 2]);

size(X)

Again, permute is just like transpose. It allows you to transpose any dimensions you wish. It applies to 3-d and higher dimension arrays.

You will do exactly the same thing, IF you wanted to generate trivariate random numbers. But now you will have a 3 instead of a 2 in those places in the reshape and permute.

### More Answers (0)

### See Also

### Categories

### Community Treasure Hunt

Find the treasures in MATLAB Central and discover how the community can help you!

Start Hunting!