1

我需要根据 Java 中的正态分布对网格(MXN 矩阵)的单元格进行采样。

我知道Apache Math 库具有对一维(1D)值进行采样的函数,因此对于向量来说它会很好,但我找不到 2D 的任何替代方法。

我曾考虑过两次使用 1D 方法:一次用于行,另一次用于列。然而,(1)它并不完全合适,因为它将使用冯诺依曼距离而不是几何距离,并且(2)这种方法不会避免重复(即它不会是采样)。

那么,如何根据以特定单元格(r,c)为中心的正态(高斯)分布对网格(矩阵)的单元格进行采样?


或者,如果采样不可能(或太复杂),我如何使用正态分布跨单元格在以特定单元格(r,c)为中心的网格中分布概率?例如,对于 3x3::

0.1 | 0.1 | 0.1
0.1 | 0.2 | 0.1
0.1 | 0.1 | 0.1

我不确定之前的值是否真的适合任何高斯,但更重要的是,对于任何矩阵,单元格的总和必须为 1。

从这里我可以迭代,并为它滚动;或滚动并迭代加起来。

4

1 回答 1

1

即使在一维情况下,也不清楚如何将从高斯分布采样的值映射到矢量索引;但是,如果您需要做的只是从 2D 高斯采样值,Apache commons 有MultivariateNormalDistribution

协方差矩阵的对角项是高斯分布沿两个方向的方差。非对角线条目是两个维度之间的协方差。如果这两个方向是独立的并且都具有一个方差,那么您的协方差矩阵将是:

double[][] covariance =
                 {{1d, 0d},
                  {0d, 1d}};
于 2016-02-24T21:58:25.350 回答