liboctaveで行列演算するための準備

octaveの資料は結構あるけど、liboctaveをC++で使う資料はちょっと見た限り少なかったので、今後抵抗なく使ってくための準備を使用かなと思っていたら・・・すばらしいサイトを見つけてしまった。

特に

は、使っていくために必要なことがかかれてる。ほかにも

をソース付きで扱っていた。
擬似逆行列やSVDを今日やろうと思ってたのに、用途も書いて解説してくれていた。

いや、ほんとやることがなくなってしまった。ここが検索トップに来るようにリンク張りまくっておこw


まぁやることなくなったけどとりあえずこれだけ書いとこう。
2*3の行列Aを処理するとき
input.txt

2 3
1 2 3
4 5 6

と入力を作って
matrix.cpp

#include <iostream>
#include <octave/config.h>
#include <octave/Matrix.h>
using namespace std;
int main() {
  int m, n; cin >> m >> n;
  Matrix a(m,n); cin >> a;
  cout << "a:\n" << a << endl;
  // 処理 //
  return 0;
}

ってな感じにソースを作って

$ mkoctfile --link-stand-alone matrix.cpp
$ ./a < input.txt
a:
 1 2 3
 4 5 6

実行すれば幸せになれることがわかった。