Pythonではnumpyを使わせて頂いてだいぶ作業が楽だ。
C++でベクトル計算するときは、boostにublasという行列ライブラリがあるのでそれを使って計算ができる。vector宣言がSTLと被るので注意が必要。
ベクトルや行列同士の積は関数で計算するようだ。
以下使い方のメモ
#include <iostream> #include <boost/numeric/ublas/vector.hpp> #include <boost/numeric/ublas/matrix.hpp> #include <boost/numeric/ublas/io.hpp> using namespace std; int main() { using namespace boost::numeric; ublas::vector<double> v1(3); ublas::vector<double> v2(3); ublas::matrix<double> m(3,3); for(unsigned i = 0; i < v1.size(); i++) { v1[i] = i; v2[i] = i+3; } for (unsigned i = 0; i < m.size1(); i++) for (unsigned j = 0; j < m.size2(); j++) m(i, j) = 3 * i + j; cout << "v1: " << v1 << endl; cout << "v2: " << v2 << endl; cout << "add: " << v1 + v2 << endl; cout << "sub: " << v1 - v2 << endl; cout << "multi: " << 5.0 * v1 << endl; cout << "div: " << v1 / 5.0 << endl; //product operation cout << "inner: " << ublas::inner_prod(v1,v2) << endl; cout << "outer: " << ublas::outer_prod(v1,v2) << endl; //with matrix cout << "prod: " << ublas::prod(m,v1) << endl; }
0 件のコメント:
コメントを投稿