1

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

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)
  • 此函数N从 d 维高斯分布生成样本

我的N和 d 的值始终为 1,如何mgd在 opencv c++ 中实现该功能?

4

2 回答 2

1

看看标准库“random”,它包括不同分布的方法,包括正态分布

在不相关变量的情况下,您可以为每个维度使用独立的一维随机数(参见 KeillRandor 的答案),否则不正确。对于实现,您可以查看 MATLAB 的代码,要执行此操作,请在脚本编辑器中键入

mvnnd

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

于 2014-06-11T09:30:31.820 回答
1

OpenCV 带有一个很好的随机数生成器类和许多有用的函数。要使用随机高斯噪声初始化 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); // <-

干杯!

于 2014-06-11T09:40:39.753 回答