使用以下代码,我可以绘制单个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的这些2D高斯的网格。 将以下图片视为我想要制作的图的上图(特别是网格由5x5 2D高斯制成)。应该用一个系数对每个高斯进行加权,如果它是负的,则高斯指向z轴的负值(下面网格中的黑点),如果它是正的,则如上图所示(下面网格中的白点)
让我提供一些数学细节。网格对应于2D高斯的混合,如下式所示:
其中每个高斯都有自己的均值和偏差。
请注意,混合物的每个高斯分布应放在确定的(X,Y)坐标中,使它们彼此相等。例如,考虑(0,0)中的中心高斯,然后其他的应该在(-1,1)(0,1)(1,1)( - 1,0)(1,0)(-1, -1)(0,-1)(1,-1)在网格尺寸为3x3的情况下。
你能提供给我(并向我解释)我该怎么做这样的情节? 在此先感谢您的帮助。
答案 0 :(得分: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