Matlab中的多元随机数生成

Matlab中的多元随机数生成,matlab,random,covariance,Matlab,Random,Covariance,我可能有点笨,但我不太懂数学,似乎无法理解创建多元数据的协方差元素 我在寻找两列随机数据(表示两个相关变量) 我认为我需要使用mvnrnd函数是正确的,我理解“mu”必须是我的平均向量的一列。因为我的数据中需要4个不同的类,它们将是(1,1)(-11)(1-1)和(-1-1)。我假设每次都要用不同的平均向量列来做4x函数,然后将它们组合起来,得到完整的数据集 我不明白我应该为SIGMA设置什么-Matlab帮助告诉我,它必须是“一个d×d对称半正定矩阵,或一个d×d×n数组”,即协方差矩阵。我不

我可能有点笨,但我不太懂数学,似乎无法理解创建多元数据的协方差元素

我在寻找两列随机数据(表示两个相关变量)

我认为我需要使用mvnrnd函数是正确的,我理解“mu”必须是我的平均向量的一列。因为我的数据中需要4个不同的类,它们将是(1,1)(-11)(1-1)和(-1-1)。我假设每次都要用不同的平均向量列来做4x函数,然后将它们组合起来,得到完整的数据集

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


任何建议都将不胜感激

假设我正确理解了你的情况,我会这样做:

data = [normrnd(0,1,5000,1),normrnd(0,1,5000,1)]; %% your starting data series
MU = mean(data,1);
SIGMA = cov(data);
现在,应该可以使用
MU
SIGMA
馈送
mvnrd

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

我希望这会有所帮助。

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


k=6;%特征尺寸
mu=rand(1,k);
西格玛=10*眼(k,k)

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


然后,您可以将其用作上面的mvnrnd函数示例,并查看绘图。

是定义和确定分布的东西,这就是为什么它是输入的一部分,就像平均值和标准偏差一样。对不起,这可能是我的专业偏见,但是,随附一个例子和一些你想要的粗略数字怎么样?2维特征空间中的4个高斯分布(总共1000个案例)。每个分布的先验概率应为0.25,平均向量必须为class1=(1,1)、c2=(1,-1)、c3=(-1,1)和c4=(-1,-1)。它只是模拟数据,用于遥感分类。我目前正在修改Matlab示例,以了解更改协方差矩阵中的值实际上会做什么。谢谢你的链接:)请注意,我的只是一个非常粗略的例子。我不知道你的数据是否有任何预期的协方差矩阵。