C ++提升ublas +单位维度约束

时间:2010-06-13 20:09:26

标签: c++ boost ublas units-of-measurement

我正在寻求有关如何使用增强单位强制对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 个答案:

答案 0 :(得分:1)

查看这个漂亮的Boost教程,该教程使用模板元编程引入了尺寸分析功能:

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

这将要求您为要在应用中使用的每个维度创建一整套模板特化,但结果是值得的 - 它不会让您犯错误或在尺寸中添加歧义。 / p>