【问题标题】:Plot a grid of Gaussians with Matlab用 Matlab 绘制高斯网格
【发布时间】:2014-11-05 04:52:27
【问题描述】:

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

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-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 的网格。

你能告诉我(并向我解释)我怎么能做这样的情节吗? 提前感谢您的帮助。

【问题讨论】:

    标签: matlab plot mesh


    【解决方案1】:

    确实你自己说过,放(作为一个例子只是为了手段)

    [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
    

    【讨论】:

    • 我 c,感谢您指出 for 循环...但我的困难在于保证高斯人以固定且预定的网格为中心。我该怎么做?
    • 什么意思?网格还是一样的(X , Y)
    • 我的意思是混合物的每个高斯都应该放在一个确定的 (X,Y) 坐标中,这样它们之间的距离相等。例如,考虑在 (0,0) 中的中心高斯,那么其他的应该在 (-1,1) (0,1) (1,1) (-1,0) (1,0) (-1, -1) (0,-1) (1,-1) 在尺寸为 3x3 的网格的情况下
    • 你想要的所有时间......感谢您的帮助;)
    • @Matteo,请看一下。
    猜你喜欢
    • 2022-01-25
    • 1970-01-01
    • 1970-01-01
    • 2011-01-20
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多