boost matrix serialization
boost::numeric::ublas::matrixをserializeする方法。
serializationには、boostを事前にコンパイルしておく必要あり。
1 cd boost_install_dir
2 ./bootstrap.sh
3 ./bjam
boost_install_dir/stage/libにライブラリが作成される。
ld.so.conf.dにboost.confを作成。
#boost.conf
boost_install_dir/stage/lib
ldconfigの実行。
main.cpp
#include <boost/numeric/ublas/matrix.hpp> #include <boost/numeric/ublas/io.hpp> #include <boost/serialization/serialization.hpp> #include <boost/archive/text_oarchive.hpp> #include <boost/archive/text_iarchive.hpp> using namespace boost; using namespace boost::numeric::ublas; using namespace boost::archive; #include <iostream> #include <fstream> using namespace std; int main( void) { { int N =5; int M =2; matrix<int> mat_write( N, M); for( size_t i =0; i <mat_write.size1(); ++i){ for( size_t j =0; j <mat_write.size2(); ++j){ mat_write( i, j) =i+(j+1); } } cout <<mat_write <<endl; ofstream file( "save.dat"); text_oarchive oa( file); oa <<(const matrix<int>)mat_write; file.close(); } { matrix<int> mat_read; ifstream file( "save.dat"); text_iarchive ia( file); ia >>mat_read; file.close(); cout <<mat_read <<endl; } return 0; }
g++ main.cpp -I{boost_install_dir} -L{boost_install_dir/stage/lib} -lboost_serialization-xx-mt
xxにはgcc43などコンパイル環境に依存する。boost_install_dir/stage/libを見れば分かる。
Mac OS Xの場合は、export DYLD_LIBRARY_PATHを通しておくこと。