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 № 1El 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
.