2012年9月9日日曜日

OctaveとJavaの連携について

 JavaからOctaveを呼び出すというすごくニッチな話。
 どういうときに便利かというと、Octaveでサクッと行列計算が必要なアルゴリズムを書いたのはいいけど、その後でGUIが欲しくなったというときに便利。
 とりあえずアプリケーションの形にしてしまいたいときに効果を発揮するのですが、果たしてどのくらいの人がこの記事を必要とするのだろう。

 とにかく、始めましょう。

   Octaveの実行ファイルに対してパスを通しておいて、RuntimeクラスやProcessクラスあたりを使って標準出力とやり取りをするという方法もあると思うのですが、今回はライブラリを用いてOctaveを使ってみたいと思います。
   といっても、Octaveの実行ファイルにパスを通しておく必要があるのは同じなのですが。

   今回使うライブラリのサイトは
   http://kenai.com/projects/javaoctave/pages/Home
です。
   必要なのは、
これら二つのjarファイルです。

   あとはEclipseならプロジェクトファイルにjarのパスを通せばJavaからOctaveが呼び出せるようになります。使い方もサンプルコードを見ればだいたいわかるので無事終了。
 サンプルコードを見るとわかるのですが、計算結果を簡単に得られることが利点だと思います。Runtimeクラスを使うよりは楽だと予想しています。

 使ってみて気づいた点としては、
  • 自作の関数でもプロジェクトファイルに入っていればeval関数で使うこともできました。
  • また、スクリプトを読み込ませたいのであればファイルからStringに読み込んでおいてからeval関数を使うと上手くいくようでした。
くらいでしょうか。


 既に書いたように、行列計算が割と簡単にできるというOctaveのメリットを享受しつつ、GUIを加えてちょっとしたアプリケーションにしたいときにこの方法を使うと楽ができるのではないかなと思います。
 なんでもMATLABで頑張るとGUIアプリケーションのようなものができるらしいので、MATLABとほぼ互換のOctaveでもGUIが作れるのかもしれませんが、JavaのSwingでGUIを作るほうが速いよって人に向いているかもしれません。