2008年2月17日日曜日

boost::numeric::ublas::matrixを使ってみる。

重要(FAQより)
  • パフォーマンスが必要な場合はコンパイル時に必ずNDEBUGを定義する→expression templateが有効になる。
  • 行列の積の積 prod(A, prod(B, C))がexpression templateにより遅くなる場合
    prod (A,matrix_type (prod (B, C)))
    prod (A, prod < matrix_type > (B, C))
    のようにして明示的に一時行列を導入すれば良い。(メモリ使用量は増える)
  • 要素への配列風アクセスも定義されているが一時オブジェクトが必要になるので(メモリ量的に)高くつく場合がある。(ublas overviewのcompatibilityより)

生成
  • 引数なしコンストラクタで0,0要素行列の生成 → resize(n,m)でn行m列に変形
  • コンストラクタ(n,m)でn行m列 行列を生成させる。
のどちらか。これら以外のコンストラクタはコピーコンストラクタだけ。


メンバ関数にあるもの
  • insert, resize, clear 等コンテナに共通する操作
  • イテレータ関連

演算子オーバーロードされているもの
  • スカラーと行列の四則演算
  • 行列同士の代入、加減
  • ストリームへの &lt&lt 等はboost/numeric/ublas/io.hppで定義

boost::numeric::ublas 以下にはmatrixに限らない、基本的な演算のための非メンバの関数が置かれている
  • prod ベクトル/行列とベクトル/行列の乗算
  • trans 転置

0 件のコメント:

コメントを投稿