2011-06-08 24 views
5

Estoy haciendo una simulación en la que debo calcular muchos promedios y pensé que usar acumuladores boost :: sería una buena idea. El problema es que una de las cantidades que deseo promediar es una matriz simétrica, cuya diagonal se conoce de antemano. SO solo necesito calcular los promedios para Q [i] [j] si i < j.Estructura de datos similar a una matriz simétrica para C++

Al principio me dio la impresión de que podía utilizar un

using namespace boost::accumulators; 
using namespace boost::numeric::ublas; 
typedef accumulator_set<double, stats<tag::mean> > accumulator; 

symmetric_matrix<accumulator, lower> foo; // a symmetric matrix of accumulators 

para mantener mis acumuladores. Pero luego se me ocurrió que esta estructura simétrica_matriz podría ser adecuada para contener solo valores numéricos (tienen operaciones aritméticas definidas) o está optimizada para este tipo de datos de alguna manera. ¿Es esto correcto?

Si symmetric_matrix from boost no es adecuado, necesito una estructura de datos que pueda contener el triángulo inferior de una matriz simétrica sin la diagonal, y debe ser adecuado para contener los acumuladores y tener una buena sintaxis similar a la matriz. ¿Está disponible en alguna biblioteca? Si no, ¿hay una implementación fácil para este tipo de estructura?

+2

No hay nada en las matrices de impulso que requiera que el tipo de elemento sea numérico. Excepto los operadores aritméticos de matrices, por supuesto, pero si no los usa, no se crean instancias. –

Respuesta

Cuestiones relacionadas