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

这是产生的情节:

在此处输入图像描述

但是,我想绘制一个具有这些 2D-Gaussians 的指定数量 x 的网格。将下图视为我想要制作的图的上方视图(特别是网格由 5x5 2D-Gaussians 组成)。每个高斯都应该用一个系数加权,如果它是负的,那么高斯指向 z 轴的负值(下面网格中的黑点),如果它是正的,它就像上图一样(下面网格中的白点) .

在此处输入图像描述

让我提供一些数学细节。网格对应于 2D-Gaussians 的混合,如以下等式所示:

在此处输入图像描述

其中每个高斯都有自己的均值和偏差。

请注意,混合物的每个高斯分布都应放置在确定的 (X,Y) 坐标中,以使它们彼此距离相等。例如,在 (0,0) 中考虑中心高斯,那么其他的应该在 (-1,1) (0,1) (1,1) (-1,0) (1,0) (-1, -1) (0,-1) (1,-1) 对于尺寸为 3x3 的网格。

你能提供给我(并向我解释)我该怎么做这样的情节吗?在此先感谢您的帮助。

4

1 回答 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

在此处输入图像描述

于 2012-12-01T11:14:13.727 回答