粒子滤波器中的多元高斯分布

时间:2014-06-11 09:10:35

标签: c++ opencv particle-filter

在初始化粒子时,我需要为它添加一些高斯噪声。例如

particle.x(i) = rect(1)+mgd(1,1,0,10);

这里rect(1)给出位置,而mgd函数提供噪声

有关mgd功能的详细信息如下:

  • 功能x=mgd(N,d,rmean,covariance)
  • 生成多元高斯分布
  • 使用x=mgd(N,d,mu,sigmax)
  • 此函数从d维生成N个样本 高斯分布

我的N和d的值总是1,如何在opencv c ++中实现mgd函数?

2 个答案:

答案 0 :(得分:1)

查看标准库"random",它包含不同发行版的方法,包括normal distribution

对于不相关的变量,您可以为每个维度使用独立的1D随机数(请参阅KeillRandor的答案),否则它不正确。为了实现,您可以查看MATLAB的代码,然后输入脚本编辑器

  

mvnrnd

然后右键单击键入的命令并在上下文菜单中选择打开mvrnd。您将看到mvnrnd函数的MATLAB代码。

答案 1 :(得分:1)

OpenCV附带了一个很好的Random Number Generator类以及许多有用的函数。要使用随机高斯噪声初始化d维向量,请执行以下操作:

int d = 10; // dimension
float m = 0, cov = 0.1; // mean and covariance
vector<float> X(d,.0f); // your d-dimensional vector
cv::randn(X,m,cov); // <-

干杯!