行列計算ライブラリCwMtx - TK's HP

TK's HP ホーム » スポンサー広告 » 日記? » 行列計算ライブラリCwMtx

スポンサーサイト

上記の広告は1ヶ月以上更新のないブログに表示されています。
新しい記事を書く事で広告が消せます。

行列計算ライブラリCwMtx

行列計算ライブラリを探していると先輩からCwMtxというライブラリがあると教えてもらいました。Linux用です。他にもOpenCVで計算させるとかOctaveで計算させるとかありましたが、OpenCVは使わないのでこちらをCwMtxを使ってみることにしました。

C++,Linux用です。
結構使いやすかったので簡単に紹介です。

ダウンロード
CwMtx公式サイト?から"cwmtx-0.6.2.tar.gz"というファイルを引っ張ってきて展開する。現時点(2009/6/28)ではこれが最新ですが、バージョンアップしていたらそれをダウンロードして下さい。

インストール
まずREADMEを読みましょう。Makefileのインストールディレクトリを書き直せとか書いてあるので、編集します。geditなどで編集します。デフォルトだと"${HOME}/include/cwmtx"上に展開されますが、"/usr/local/include/"の方が一般的なので、これに直します。

$ cd cwmtx-0.6.2
$ gedit Makefile

23行目くらい

INC_INST_DIR=${HOME}/include/cwmtx

を編集して

INC_INST_DIR= /usr/local/include/cwmtx

に変更後、インストール。

$ make (たぶんやらなくてもOK)
$ sudo make install



使い方
簡単な例は"cwmtx-0.6.2/test/mattest.cpp"に載っていますが、コメントが無いのでもう少し分かりやすい具体例です。
mattesttest_cpp.txt


//mattesttest.cpp
//コンパイル:g++ -o mattesttest mattesttest.cpp
//実行:./mattesttest
#include
#include

using namespace CwMtx;
using namespace std;

int main()
{
//まずはインスタンスの生成
CWSquareMatrix sq_mat(3);//3×3正方行列
CWMatrix mat(3,3); //3×3行列
CWVector vect(3); //ベクトル

//初期化
sq_mat.makeUnity(); //単位行列に初期化
mat.fill(1); //全て1にする
vect.fill(0); //全て0

//表示
cout << "sq_mat : " << sq_mat << endl;
cout << "mat : " << mat << endl;
cout << "vect : " << vect << endl;

//要素に直接アクセス
sq_mat[0][0] = 1;
mat[1][0] = 0;
vect[1] = 2;

//正方行列の行列計算
cout << "inv(sq_mat): " << inv(sq_mat) << endl;//逆行列
cout << "tr(sq_mat) : " << transpose(sq_mat) << endl;//転置行列
cout << "det(sq_mat): " << det(sq_mat) << endl;//行列式

//その他計算
cout << "m x m " << sq_mat * sq_mat << endl;//行列同士そのまま計算できる
cout << "m x v " << mat * vect << endl;//行列×ベクトルも計算できる
cout << "m + m " << sq_mat + mat << endl;
return 0;
}




09/07/27追記
よくよく見るとWindowsでも使えるようです。
.tar.gzなのでLinuxでしか使えないと思ってしまいました。
Windowsで使うにはコンパイラのヘッダファイルを保存している場所("C:\Program Files\Microsoft Visual Studio 9.0\VC\include"等)にCwMtxというファイルをつくり、ヘッダファイルを保存します。

これでたぶん使えるはずです。


これで出来なくてもヘッダファイルをソースファイルと同じフォルダに入れてインクルードすれば、Windows、Linux関係なく使えるはずです。
関連記事
コメント
非公開コメント

トラックバック

http://tclip.blog.fc2.com/tb.php/30-05a3d57b

上記広告は1ヶ月以上更新のないブログに表示されています。新しい記事を書くことで広告を消せます。