在初始化粒子时,我需要为它添加一些高斯噪声。例如
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
个样本
高斯分布我的N
和d的值总是1,如何在opencv c ++中实现mgd
函数?
答案 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); // <-
干杯!