我是Matlab的新手,对于一个愚蠢的问题感到抱歉。
我想创建一个由GMM生成的二维向量序列,由三个多元正态分布组成。
所以,让我们开始
mu = [[0 1]; [0 2]; [0 3]]
cov = cat(4, 0, 0.5)
p = [0.4 0.4 0.2]
obj = gmdistribution(mu, cov, p)
问题是这一系列命令不起作用。
另外,我希望这三个分布有一个小的重叠。我不知道如何评估mu和cov,以便它们会有一个小的重叠。
答案 0 :(得分:1)
首先,cov
是协方差函数的名称,因此您最好调用您的变量,例如: sigma
。其次,您将cov
变量创建为4-D数组,其值0
位于cov(1,1,1,1)
,0.5
位于cov(1,1,1,2)
。
根据协方差矩阵的外观,变量sigma
看起来可能不同。设d
为维数(示例中为2),k
为分布数(示例中为3)。
一般情况:
每个高斯分布具有任意协方差矩阵。 sigma
的大小为d
x d
x n
,即2x2x3,其中sigma(:,:,k)
是k
协方差矩阵。注意,协方差矩阵当然必须是对称的并且是半正的。你这样做,例如由
sigma(:,:,1) = [1.0, 0.5 ; 0.5, 2.0];
sigma(:,:,2) = [0.8, 0.1 ; 0.1, 0.2];
sigma(:,:,3) = [1.2, 0.4 ; 0.4, 0.3];
对角线协方差矩阵如果所有协方差矩阵都是对角线的,则可以将sigma指定为1
x d
x k
(1x2x3)矩阵,其中sigma(1,:,k)
是k
协方差矩阵的对角元素。 E.g。
sigma(1,:,1) = [1.0, 2.0];
sigma(1,:,2) = [0.8, 0.2];
sigma(1,:,3) = [1.2, 0.3];
相同的协方差矩阵如果所有k
协方差矩阵都相同,那么只要指定一次就足够了
sigma = [1.0, 0.5 ; 0.5, 2.0];
相同的对角线协方差矩阵如果所有k
协方差矩阵都是相同的对角矩阵,sigma
是包含对角元素的向量
sigma = [1.0, 2.0];