我可能有点密集,但我不是很数学,似乎无法理解创建多变量数据的协方差元素。
我正在追踪两列随机数据(代表两个相关变量)。
我认为我需要使用mvnrnd函数是正确的,我知道'mu'必须是我的平均向量的列。因为我需要在我的数据中有4个不同的类,所以这些类将是(1,1)( - 1)(1 -1)和(-1 -1)。我假设我每次都必须使用不同的平均向量列来执行函数4x,然后将它们组合起来以获得我的完整数据集。
我不明白我应该为SIGMA提供什么--Matlab帮助告诉我它必须是'一个d-by-d对称正半定矩阵,或一个d-by-d-by-n数组'即协方差矩阵。我不明白我是如何为我尚未生成的数字创建协方差矩阵。
非常感谢任何建议!
答案 0 :(得分:1)
假设我理解你的情况,我会这样:
data = [normrnd(0,1,5000,1),normrnd(0,1,5000,1)]; %% your starting data series
MU = mean(data,1);
SIGMA = cov(data);
现在,应该可以使用mvnrnd
和MU
提供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函数的上述示例并查看图。