多元分布的matlab GMM

matlap GMM of multivariate distibutions

我是 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,使它们有一个小的重叠。

首先,cov 是协方差函数的名称,因此您最好将变量命名为例如sigma。其次,您将 cov 变量创建为一个 4 维数组,其值 0cov(1,1,1,1)0.5cov(1,1,1,2)

根据协方差矩阵的外观,变量 sigma 可能看起来不同。设 d 为维数(在您的示例中为 2),k 为分布数(在您的示例中为 3)。

一般情况: 每个高斯分布都有一个任意的协方差矩阵。 sigma 的大小为 dxdxn,即 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 作为 1xdxk( 1x2x3) 矩阵,其中 sigma(1,:,k) 是第 k 个协方差矩阵的对角线元素。例如

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];