在Matlab中生成多变量随机数

3

我可能有点笨,不是很善于数学,无法理解创建多元数据的协方差元素。

我需要两列随机数据(代表两个相关变量)。

我认为我需要使用mvnrnd函数,并且我明白'mu'必须是我的均值向量的一列。由于我需要数据中有4个不同的类别,它们将是(1,1) (-1,1) (1,-1)和(-1,-1)。我假设我需要分别用不同的均值向量列执行4次该函数,然后将它们组合起来得到完整的数据集。

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

任何建议将不胜感激!


协方差矩阵是定义和确定分布的一部分,因此它与均值和标准偏差一样是输入的一部分。请参考交叉协方差矩阵 - Eitan T
抱歉,这可能是我对教授的偏见,但您可以附上一个示例和一些粗略的数字来说明您的目标吗? - fpe
在二维特征空间中有4个高斯分布(总共1000个案例)。每个分布的先验概率应为0.25,均值向量必须为class1 =(1,1),c2 =(1,-1),c3 =(-1,1)和c4 =(-1,-1)。这只是模拟数据,用于遥感分类目的。我正在修改Matlab示例以了解更改协方差矩阵中的值实际上会发生什么。谢谢您的链接 :) - Laura
2个回答

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

我希望这可以帮助到您。


请注意,我的只是一个相当粗略的例子。我不知道你的数据是否包含任何预期协方差矩阵。 - fpe

0

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

k = 6; % 特征维度 mu = rand(1,k); sigma = 10*eye(k,k);

将单位矩阵乘以10倍得到的是一个对称正半定矩阵。高斯分布将比其他类型的sigma更加圆形。

然后,您可以像上面mvnrnd函数的示例一样使用它并查看图表。


网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接