用Matlab绘制高斯网格

用Matlab绘制高斯网格,matlab,plot,mesh,Matlab,Plot,Mesh,使用以下代码,我能够绘制单个二维高斯函数的曲线图: 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 这是生成的绘图: 但是,我想绘制一个网格,其中包含指定数量的x个二维高斯。 把下面的图片想象成我想要绘制的图的上图(特别是网格由5x5个2D高斯组成)。每个高斯应通过一个系数进行加权,这样,如果它是负的,则高斯指向

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

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
这是生成的绘图:

但是,我想绘制一个网格,其中包含指定数量的x个二维高斯。 把下面的图片想象成我想要绘制的图的上图(特别是网格由5x5个2D高斯组成)。每个高斯应通过一个系数进行加权,这样,如果它是负的,则高斯指向z轴的负值(下面网格中的黑点),如果它是正的,则如上图所示(下面网格中的白点)

让我提供一些数学细节。网格对应于二维高斯混合,如下式所示:

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

注意,混合物的每一个高斯分布都应该放在一个确定的(X,Y)坐标中,这样它们之间的距离就相等了。e、 g考虑(0,0)中的中心高斯分布,那么对于尺寸为3x3的网格,其他高斯分布应该在(-1,1)(0,1)(1,1)(-1,0)(1,0)(-1,-1)(0,-1)(1,-1)

你能提供给我(并向我解释)我如何能做这样一个阴谋吗?
提前谢谢你的帮助。

事实上,你自己说过,把(作为一个例子,只是为了说明方法)


IC,谢谢你指出了周期……但我的困难在于保证高斯分布集中在一个固定的预定网格上。我怎么做?你什么意思?网格仍然是相同的
(X,Y)
我的意思是,混合物的每个高斯分布都应该放在一个确定的(X,Y)坐标中,这样它们彼此之间的距离相等。e、 g想想(0,0)中的中心高斯分布,那么其他的分布应该在(-1,1)(0,1)(1,1)(-1,0)(1,0)(-1,-1)(0,-1)(1,-1)中,如果网格的尺寸为3x3,则所有时间都需要…thks来帮助;)@马特奥,请看一看。
[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