在 TikZ 中绘制二元正态分布网格

在 TikZ 中绘制二元正态分布网格

这个问题已在这篇文章中得到解答邮政,但我希望对它进行一点改编。

我想采用上述帖子的顶部解决方案。我希望有一个这样的分布网格,而不是单个双变量分布。网格应该是矩形的,每个源的位置都是可控的。

然后我想调整这个结果图像以删除所有轴并仅留下表面分布。

我想要的网格应该是这样的这里。但每个圆的位置应该是二维高斯。

期望输出

像这样,有或没有轴上的投影。

在此处输入图片描述

分布

电网中每个源应具有以下分布:

$$f(x, y) = \frac{1}{2\pi \sigma_x \sigma_y}\exp[-\frac{(x-\mu_x)^2}{\sigma_x^2} + -\frac{(y-\mu_y)^2}{\sigma_y^2}]$$.

其中 $\sigma_x = \sigma_y$,并且对于不同的源,$\mu_x$ 和 $\mu_y$ 的值不同。请注意,此分布具有协方差矩阵的对角线形式,元素 $\sigma_x$ 和 $\sigma_y$ 在对角线上。

答案1

我不知道我是否会理解 pgfplots 中的循环。

输出

在此处输入图片描述

(简单的)代码

@Jake 指出这对于 pgfplots 来说需要进行大量的计算,因此你最好预先计算这些函数通过外部工具

\documentclass[tikz]{standalone}
\usepackage{pgfplots}
\begin{document}
\begin{tikzpicture}
  [
    declare function=
    {
      gaussian(\x)= exp(-.5*\x^2);
      gaussianDouble(\x,\y)= gaussian(\x)*gaussian(\y);
    }
]
\begin{axis}
  \foreach\i in {0,4,...,12}
  {
    \foreach\j in {0,4,...,12}
    {
      \addplot3[surf, samples=20, domain=-2:2, y domain=-2:2]({x+\i},{y-\j},{gaussianDouble(x,y)});
    }
  }
\end{axis}
\end{tikzpicture} 
\end{document}

在 Scilab 中

没有答案,但这是你想要的吗?

如果可以的话,我可以编辑您的问题以在其中包含图片吗?

输出

在此处输入图片描述

(Scilab)代码

function z=normal(x,y)
  norm = x.^2 + y.^2
  z = exp(-.5*norm)
endfunction
clf()
x=linspace(-3,3,30)
[X,Y]=meshgrid(x)
for i=0:2:10
  for j=0:2:10
    surf(X+i,Y+j,normal(X,Y))
  end
end
f=gcf()
f.color_map = autumncolormap(32);

相关内容