2012年8月6日月曜日

MatlabのmatファイルをJavaで読み込み

なんらかの事情でMatlabで計算して、Matlabのフォーマットで出力したmatファイルの中のデータを読みたい場合。

そんなときには JMatIO というライブラリがある。BSDライセンスらしい。
例えば、以下のサイトから JMatIO_071005.zip を落としてみる。
http://sourceforge.jp/projects/sfnet_jmatio/

解凍すると lib フォルダの中に jmatio.jar があるから、eclipse で使う場合には、パッケージ名を右クリックして、
Build Path --> Add External Archives
にこの jar ファイルを指定すればいい。



さて、簡単な使い方。
まず、abc.mat というファイルがあったとして、abc.mat の中には、result という名前の行列(double型)が保存されてるとする。

MatFileReader のコンストラクタが IOException を投げる可能性があるので、try catchでくくって、

try{
  MatFileReader mfr = new MatFileReader(new File("abc.mat"));
  MLDouble array = (MLDouble)mfr.getMLArray("result");
  double[][] result = array.getArray();
}
catch(IOException ioe){
  ioe.printStackTrace();
}

とすると、double[][] result に行列データが代入される。
eclipse だと面倒見てくれるけど、

import com.jmatio.io.MatFileReader;
import com.jmatio.types.MLDouble;

をインポートしとくこと。

ちなみに、javadoc は解凍したフォルダの doc の中にあるけど、あんまり丁寧じゃない。

0 件のコメント:

コメントを投稿