多重高斯分布

Multiple Gaussian distribution

我有一个关于多重高斯分布的问题。我想使用 mu 和 sigma 的值在 Matlab 中制作一个多重高斯分布图。每个 mu 和 sigma 值如下。

我尝试使用谷歌搜索分发,但找不到合适的方法。

mu=[5.8004  0.14525 -4.0411 1.1161  -3.6258 1.6585  1.1613
0.14525 32.663  -2.8371 1.3292  1.3838  -62.186 22.539
-4.0411 -2.8371 7.6885  -0.18544    0.20169 0.25875 -0.66792
1.1161  1.3292  -0.18544    4.3548  -2.7958 -4.4291 2.57
-3.6258 1.3838  0.20169 -2.7958 7.8771  -3.2168 -2.2609
1.6585  -62.186 0.25875 -4.4291 -3.2168 127.91  -46.465
1.1613  22.539  -0.66792    2.57    -2.2609 -46.465 208.16
7.4255  1.8909  -6.9332 0.89757 -2.9763 0.58144 0.43133
1.8909  4.6081  -3.1238 0.97061 0.32344 -3.0072 -1.023
-6.9332 -3.1238 11.111  1.872   -1.8988 -1.5642 2.2554
0.89757 0.97061 1.872   6.829   -4.6848 -4.8308 2.7052
-2.9763 0.32344 -1.8988 -4.6848 8.8088  0.33298 -3.7211
0.58144 -3.0072 -1.5642 -4.8308 0.33298 8.9617  -0.85186
0.43133 -1.023  2.2554  2.7052  -3.7211 -0.85186    126.78
4.7323  2.7731  -4.5031 0.89411 -3.6113 1.3601  1.101
2.7731  2.34E+05    -2.32E+05   -1.0222 -0.8296 1.9802  -376.45
-4.5031 -2.32E+05   2.33E+05    0.10827 -4.0739 1.0592  -152.04
0.89411 -1.0222 0.10827 4.6809  -3.0856 -2.7107 1.8127
-3.6113 -0.8296 -4.0739 -3.0856 10.61   -2.6682 -2.2376
1.3601  1.9802  1.0592  -2.7107 -2.6682 9.8109  -1.5938
1.101   -376.45 -152.04 1.8127  -2.2376 -1.5938 534.4
]

sigma=[9.0965   8.844   8.9626  8.2654  8.6527  8.4207  8.0053
9.3904  9.0113  9.3944  8.6484  8.9999  8.931   8.0081
9.1281  9.0006  9.0006  8.471   8.8264  8.8089  8.0025]

几件事,

1) 您的 musigma 向量大小不同。 (我假设你可以解决这个问题) 2) 你没有高斯振幅。

假设你修复了这些(振幅在 A),

mu = 10*rand(2,1)-20;
sigma = 10*rand(size(mu));
A = 5*rand(size(mu));
f =@(x) arrayfun(@(y) sum(A.*exp(-0.5*((y - mu)./sigma).^2)), x);
x = linspace(-30, 30, 1000);
plot(x, f(x))

编辑: 根据评论,我假设您想使用 musigma.

的所有组合

我认为数组函数是最简单的方法。

[M, S] = meshgrid(mu, sigma);
M = M(:);
S = S(:);
f =@(x) cell2mat(arrayfun(@(m,s) exp(-0.5*((x(:)' - m)./s).^2), M, S, 'uni', 0));
x = linspace(-50, 50, 1000);
plot(x, f(x))