3

おそらくブーストユニットを使用して、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 のアーカイブを調べました。いくつかの議論がありますが、具体的なものは何もありません。

ありがとうございました

4

1 に答える 1

1

テンプレートメタプログラミングを使用した次元分析機能を紹介する、この素晴らしい Boost チュートリアルをチェックしてください。

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

これには、アプリで使用するすべてのディメンションに対してテンプレートの特殊化のセット全体を作成する必要がありますが、その結果には価値があります。間違いを犯したり、ディメンションにあいまいさを追加したりすることはできません。

于 2010-06-15T14:45:18.810 に答える