小编JCo*_*per的帖子

来自C++中的多元正态/高斯分布的样本

我一直在寻找一种方便的方法来从多元正态分布中进行采样.有没有人知道有一个现成的代码片段可以做到这一点?对于矩阵/向量,我更喜欢使用BoostEigen或我不熟悉的另一个现象库,但我可以使用GSL.如果方法接受非负 -无限协方差矩阵而不是要求正定(例如,与Cholesky分解一样),我也会喜欢它.这存在于MATLAB,NumPy等中,但我很难找到现成的C/C++解决方案.

如果我必须自己实施,我会发牢骚但这没关系.如果我这样做,维基百科听起来就像我应该的那样

  1. 生成n 0均值,单位方差,独立正态样本(boost会这样做)
  2. 找到协方差矩阵的特征分解
  3. 通过相应特征值的平方根来缩放n个样本中的每一个
  4. 通过将经缩放的矢量乘以由分解找到的标准正交特征向量的矩阵来旋转样本矢量

我希望这能很快发挥作用.有人有直觉知道何时值得检查协方差矩阵是否为正,如果是,请使用Cholesky代替?

c++ statistics normal-distribution gaussian linear-algebra

31
推荐指数
2
解决办法
2万
查看次数