2012-08-16 5 views
0

J'essaye de générer une matrice de Bernoulli, avec des valeurs limitées entre -1 et 1. J'utilise OpenCV cv::Mat comme structure de données pour contenir les valeurs. Existe-t-il un moyen facile de générer une telle matrice? Pour autant que je sache, OpenCV ne fournit pas un moyen de le faire, donc je suis heureux d'utiliser une autre bibliothèque si nécessaire.Bernoulli Matrice avec OpenCV

Répondre

1

Vous devez parcourir les valeurs et affecter un nombre aléatoire un par un.

Voici comment faire:

boost::random::mt19937 rng;   // produces randomness out of thin air 
           // see pseudo-random number generators 
boost::random::uniform_int_distribution<> uni01(0,1); 

Mat bernoulli; bernoulli.create(rows, cols,CV_32FC1); 
MatIterator_<float> it = bernoulli.begin<float>(), it_end = bernoulli.end<float>(); 
for(;it!=it_end;++it) 
    (*it) = uni01(rng) ? 1.0 : -1.0; 
Questions connexes