2013-04-18 111 views
3

虽然我可能有点密集,但我不是非常数学,似乎也无法理解创建多变量数据的协方差元素。在Matlab中生成多元随机数

我在两列随机数据(代表两个相关变量)之后。

我认为我需要使用mvnrnd函数并且我明白'mu'必须是我的平均向量的列。因为我需要4个不同的类在我的数据中将(1,1)(-1 1)(1 -1)和(-1 -1)。我想我必须每次都用不同的平均向量列来执行函数4x,然后将它们组合起来以获取我的完整数据集。

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

任何意见将不胜感激!

+0

[_covariance matrix_](http://en.wikipedia.org/wiki/Cross-covariance_matrix#Statistics)是定义和确定分布的东西,这就是为什么它是输入的一部分,就像_mean_和_standard deviation_ 。 –

+0

对不起,这可能是我的教诲偏见,但如何配合一个例子和一些粗略的数字你的目标是什么? – fpe

+0

2维特征空间中的4个高斯分布(总共1000个病例)。每个分布的先验概率应该是0.25,平均向量必须是class1 =(1,1),c2 =(1,-1),c3 =(-1,1)和c4 =(-1,-1) 。这只是模拟数据,以便进行遥感分类。我目前正在修改Matlab示例,以了解在协方差矩阵中实际改变值的含义。感谢您的链接:) – Laura

回答

1

假设我正确理解你的话,我会去这样:

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

现在,它应该是可能的MUSIGMA养活mvnrnd

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

我希望这有助于。

+0

请注意,我的只是一个非常粗略的例子。我不知道你的数据是否强调任何预期的协方差矩阵。 – fpe

0

我认为你的目标是生成模拟的多元高斯分布数据。例如,我使用了10倍

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

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

然后你可以使用它作为mvnrnd函数的上面的例子,看看图。