Matlab中的多元随机数生成

时间:2013-04-18 11:37:48

标签: matlab random covariance

我可能有点密集,但我不是很数学,似乎无法理解创建多变量数据的协方差元素。

我正在追踪两列随机数据(代表两个相关变量)。

我认为我需要使用mvnrnd函数是正确的,我知道'mu'必须是我的平均向量的列。因为我需要在我的数据中有4个不同的类,所以这些类将是(1,1)( - 1)(1 -1)和(-1 -1)。我假设我每次都必须使用不同的平均向量列来执行函数4x,然后将它们组合起来以获得我的完整数据集。

我不明白我应该为SIGMA提供什么--Matlab帮助告诉我它必须是'一个d-by-d对称正半定矩阵,或一个d-by-d-by-n数组'即协方差矩阵。我不明白我是如何为我尚未生成的数字创建协方差矩阵。

非常感谢任何建议!

2 个答案:

答案 0 :(得分:1)

假设我理解你的情况,我会这样:

data = [normrnd(0,1,5000,1),normrnd(0,1,5000,1)]; %% your starting data series
MU = mean(data,1);
SIGMA = cov(data);

现在,应该可以使用mvnrndMU提供SIGMA

r = mvnrnd(MU,SIGMA,5000);
plot(r(:,1),r(:,2),'+') %% in case you wanna plot the results

我希望这会有所帮助。

答案 1 :(得分:0)

我认为您的目标是生成模拟的多变量高斯分布数据。例如,我使用

k = 6; % feature dimension mu = rand(1,k); sigma = 10*eye(k,k);

单位矩阵10次是对称正半定矩阵。高斯分布比其他类型的西格玛更圆。

然后您可以将它用作mvnrnd函数的上述示例并查看图。