C ++ Boost UBLAS + ограничения размеров единиц - PullRequest
3 голосов
/ 14 июня 2010

Мне нужен совет по дизайну / общей идее о том, как навязать размерные ограничения матрицы матрице / вектору ublas, возможно, используя буст-единицы.

Например, пусть матрица A имеет измерения времени x силы (например,)

// 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;

Вы сделали что-то подобное или у вас есть хорошее представление о том, как организовать такие ограничения?Я больше думаю о предложении синтаксиса / семантики, чем о реализации.

Я просмотрел архивы ublas, есть некоторые обсуждения, но ничего конкретного.

Спасибо

1 Ответ

1 голос
/ 15 июня 2010

Ознакомьтесь с этим хорошим руководством по Boost, которое знакомит с возможностью пространственного анализа с использованием шаблонного метапрограммирования:

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

Это потребует от вас создания полного набора специализаций шаблонов для каждого измерения, которое вы хотите использовать в своем приложении, но результат того стоит - он не позволит вам совершать ошибки или добавлять двусмысленность в измерениях.

...