/ / Crear números aleatorios multidimensionales en MATLAB - matlab, matrix, random

Cree números aleatorios multidimensionales en MATLAB - matlab, matrix, random

Tengo un conjunto de datos de 4 dimensiones con 200 entradas. Voy a generar unos valores aleatorios dentro de este conjunto de datos. Declaré las siguientes variables:

mu = median(Input,2)";    % find the median of Input as MU
sigma = [2 1; 1 4];      % SIGMA
Data = mvnrnd(mu,sigma,10)";  % Generate random number with "mvnrnd" function

Pero, MATLAB me da un error de la siguiente manera:

SIGMA must be a square matrix with size equal to the number of columns in MU, or a row vector with length equal to the number of columns in MU.

Creo que la función "mvnrnd" no puede generar datos más de 2D.

¿Podrías por favor aconsejarme?

Respuestas

1 para la respuesta № 1

El error le dice a usted que mu no es un vector de fila, y eso es porque tomas la mediana de las filas, simplemente transpóntelo:

mu = median(Input,2).";

Aquí hay una forma de crear una matrice semi-definida positiva:

temp = rand(numel(mu));
sigma = temp."*temp;
Data = mvnrnd(mu,sigma ,100);

Alternativamente, puedes simplemente definir sigma como un vector de fila:

sigma = [2 1 1 4];

No sé cómo eliges tu sigma, pero el ejemplo anterior muestra que es posible crear más de 2-D Distribución normal multivariante con mvnrnd.