我有一个关于多个高斯分布的问题。我想使用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]
答案 0 :(得分:0)
有几件事,
1)您的mu
和sigma
向量的大小不同。 (我假设你可以解决这个问题)
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))
编辑:
根据评论,我将假设您要使用mu
和sigma
的所有组合。
我认为数组函数是最简单的方法。
[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))