[boost::numeric::ublas] outer_prod et matrix2vector
outer_prod et matrix2vector [boost::numeric::ublas] - C++ - Programmation
MarshPosté le 12-01-2011 à 18:00:08
Bonjour,
Je me suis mis à boost::numeric::ublas pour mes calculs matriciels et j'ai quelques petits soucis. J'utilise des vector et matrix de boost::numeric::ublas pour mes calculs. Plus précisemment leurs versions sparses (coordinate_matrix, coordinate_vector). J'ai deux vecteurs de doubles de tailles n~1000 et p~1000 (très sparses) et je voudrais obtenir leur outer product à plat (dans un vecteur de taille n*p).
J'obtiens ainsi dans "r" la version à plat de l'outer product.
Mon seul problème est que cette solution n'est ni élégante ni efficace (c'est surtout le second qui m'importe). En effet, l'appel à iM1.begin() fait un find2() qui est une recherche dichotomique (lower_bound). Cela me pose énormément de problèmes d'efficacité. Y-aurait-il une autre manière de réaliser cela (outer product à plat) de manière plus efficace ?
Marsh Posté le 12-01-2011 à 18:00:08
Bonjour,
Je me suis mis à boost::numeric::ublas pour mes calculs matriciels et j'ai quelques petits soucis.
J'utilise des vector et matrix de boost::numeric::ublas pour mes calculs. Plus précisemment leurs versions sparses (coordinate_matrix, coordinate_vector).
J'ai deux vecteurs de doubles de tailles n~1000 et p~1000 (très sparses) et je voudrais obtenir leur outer product à plat (dans un vecteur de taille n*p).
J'ai donc pensé à utiliser faire ceci :
afin de faire
J'obtiens ainsi dans "r" la version à plat de l'outer product.
Mon seul problème est que cette solution n'est ni élégante ni efficace (c'est surtout le second qui m'importe). En effet, l'appel à iM1.begin() fait un find2() qui est une recherche dichotomique (lower_bound). Cela me pose énormément de problèmes d'efficacité. Y-aurait-il une autre manière de réaliser cela (outer product à plat) de manière plus efficace ?