2010-06-13 5 views
3

Je cherche des conseils sur la conception/l'idée générale sur la façon de forcer des contraintes de dimension matricielle sur une matrice/un vecteur ublas en utilisant éventuellement des unités de boost.C++ boost ublas + unités dimensions contraintes

Par exemple, laissez la matrice A ont des dimensions de temps x force (par exemple)

// does not have dimensions, time x force and force x time are not distinguished. 
matrix<double> A; 

//something like? 
dimension<time, force, matrix<double> > A; 
dimension<force, time, matrix<double> > B = trans(A); 

// or maybe custom layouts, although ensuring dimension becomes harder between matrixes? 
matrix<double, dimension<time, force> > A; 

avez-vous fait quelque chose comme ceci ou avez-vous une bonne idée sur la façon d'organiser de telles contraintes? Je cherche plus la suggestion de syntaxe/sémantique plutôt que la mise en application.

J'ai parcouru les archives d'ublas, il y a des discussions, mais rien de concret.

Merci

Répondre

1

Découvrez ce joli tutoriel Boost qui introduit une capacité d'analyse dimensionnelle en utilisant le modèle-metaprogramming:

http://www.boost.org/doc/libs/1_35_0/libs/mpl/doc/tutorial/representing-dimensions.html

Cela vous demandera de créer un ensemble de spécialisations de modèle pour toutes les dimensions vous voulez utiliser dans votre application, mais le résultat en vaut la peine - il ne vous permettra pas de faire des erreurs ou d'ajouter une ambiguïté dans les dimensions.

Questions connexes