用Matlab绘制高斯网格

6

使用以下代码,我能够绘制单个二维高斯函数的图形:

x=linspace(-3,3,1000);
y=x';               
[X,Y]=meshgrid(x,y);
z=exp(-(X.^2+Y.^2)/2);
surf(x,y,z);shading interp

这是生成的绘图:

enter image description here

但是,我想绘制一个网格,其中包含指定数量(x)的二维高斯分布。可以将以下图片视为所需绘制的网格的俯视图,其中特别指出网格由5x5个二维高斯分布组成。每个高斯分布都应按权重加权,如果权重为负,则高斯分布指向z轴负值(下图网格中的黑点),如果权重为正,则如上图所示(下图网格中的白点)。

enter image description here

让我提供一些数学细节。该网格对应于多个二维高斯分布的混合,如下方程式中所示:

enter image description here

其中每个高斯分布都有自己的均值和偏差。
请注意,混合物中的每个高斯分布应放置在确定的(X,Y)坐标中,以使它们彼此等距离。例如,将中心高斯分布放置在(0,0),则其他高斯分布应在(-1,1)(0,1)(1,1)(-1,0)(1,0)(-1,-1)(0,-1)(1,-1)处,对于3x3的网格来说。
您能为我提供(并向我解释)如何绘制此类绘图吗? 提前感谢您的帮助。
1个回答

5
事实上,您自己说过,将(仅作为手段的例子)放置。
[X,Y]=meshgrid(x,y);  % //mesh

g_centers = -3:3;    
[x_g,y_g] = meshgrid(g_centers,g_centers); % //grid of centers (coarser)
mu = [x_g(:) , y_g(:)];  % // mesh of centers in column


z   = zeros(size(X));
for i = 1:size(mu,1)
     z= z + exp(-((X-mu(i,1)).^2+(Y-mu(i,2)).^2)/( 2* .001) );
end
surf(X,Y,z);shading interp

enter image description here


我明白了,感谢您指出for循环的问题...但我的困难在于保证高斯分布以固定和预定的网格为中心。我该怎么做? - Matteo
你是什么意思?网格仍然是相同的 (X, Y) - Acorbe
жҲ‘зҡ„ж„ҸжҖқжҳҜпјҢж··еҗҲй«ҳж–ҜжЁЎеһӢдёӯзҡ„жҜҸдёӘй«ҳж–Ҝеә”иҜҘж”ҫзҪ®еңЁзЎ®е®ҡзҡ„пјҲXпјҢYпјүеқҗж ҮдёӯпјҢд»Ҙдҫҝе®ғ们еҪјжӯӨзӯүи·қгҖӮдҫӢеҰӮпјҢе°Ҷдёӯеҝғй«ҳж–Ҝж”ҫеңЁпјҲ0,0пјүпјҢеҲҷе…¶д»–й«ҳж–Ҝеә”иҜҘеңЁпјҲ-1,1пјүгҖҒпјҲ0,1пјүгҖҒпјҲ1,1пјүгҖҒпјҲ-1,0пјүгҖҒпјҲ1,0пјүгҖҒпјҲ-1,-1пјүгҖҒпјҲ0,-1пјүгҖҒпјҲ1,-1пјүдёӯпјҢеңЁ3x3з»ҙзҪ‘ж јзҡ„жғ…еҶөдёӢгҖӮ - Matteo
你需要的时间都可以用...谢谢帮忙 ;) - Matteo
@Matteo,请看一下。 - Acorbe

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接