1
为这个愚蠢的问题道歉,数学不是我的强项。我试图在matlab中设计一个函数,根据d维中的正态分布N(mu,sigma)生成样本。这是我的代码到目前为止,matlab中的正态分布函数
mu = [1 2];
Sigma = [1 .5; .5 2]; R = chol(Sigma);
z = repmat(mu,100,1) + randn(100,2)*R;
我发现这个从通过各种维基百科和谷歌的文章读,不知道是否是正确的?在此先感谢,
生锈
谢谢!另外,我还有一个类似的问题,使用randn()像我上面或mvnrnd(MU,SIGMA)生成正常样本,mvnrnd用于大于2的维度有什么区别? – rusty009
'randn'不是准确的多变量,它只是在每个维度上独立生成正常数字。你不能强制协变。 'mvnrnd'用于从适当的多变量正态分布生成样本。 – Ansari
正如Ansari指出的那样,randn既是多变量又是单变量,尽管如果你有一个身份协方差矩阵,那么维数是独立的。像你一样使用randn是一个完全有效的方法来生成具有给定协方差矩阵和平均值的样本,但mvnrnd为您提供了任何参数集的一般情况。您发现的方法完全适用于更多维数。 – 2012-05-24 18:09:18