在MATLAB中创建多维随机数

在MATLAB中创建多维随机数,matlab,matrix,random,Matlab,Matrix,Random,我有一个包含200个条目的四维数据集。我将在这个数据集中生成一个随机值。我声明了以下变量: 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 但是,MATLAB给了我一个错误,如下所示: SIGMA must

我有一个包含200个条目的四维数据集。我将在这个数据集中生成一个随机值。我声明了以下变量:

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
但是,MATLAB给了我一个错误,如下所示:

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.
我认为,“mvnrnd”函数生成的数据不能超过2D


你能告诉我吗?

错误告诉你,
mu
不是一个行向量,这是因为你取行的中间值,只需将它转置:

mu = median(Input,2).';
下面是创建半正定矩阵的一种方法:

temp = rand(numel(mu));
sigma = temp.'*temp;
Data = mvnrnd(mu,sigma ,100);
或者,您可以将
sigma
定义为行向量:

sigma = [2 1 1 4]; 

我不知道你如何选择你的
sigma
,但是上面的例子告诉你,用
mvnrnd

“数据(1,:)=mvnrnd(mu(1,:),sigma,10)”可以创建多于二维的多变量正态分布依此类推,我这样做了,但错误变为:SIGMA必须是一个平方矩阵,其大小等于MU中的列数,或者是一个行向量,其长度等于MU中的列数features@BlueBit请参阅我的编辑,了解一个可处理二维以上图形的简单案例