2018年3月15日木曜日

Matlab for Java : (4) グラフ描画

JavaからMatlabを使ってグラフを描きます。
基本形でsin関数を3つ、ラベル付け、グラフの保存です。
https://jp.mathworks.com/help/matlab/learn_matlab/basic-plotting-functions.html



[注意点]
・ラベルはplotのあとに追加する
・ファイルを表示した時、関数が終了すると消える(pause関数で表示させておく)
・ファイルを保存する時、saveas(gcf,'sample.png') この時のgcfは「現在の Figure を保存するには、fig に gcf を指定します。」
https://jp.mathworks.com/help/matlab/ref/saveas.html
・JavaからMatlabを起動すると、ディレクトリも共有されていました。Matlabを開いたら、Eclipseで作成したディレクトリになっていました。グラフをそのまま保存すると、プロジェクトのホームディレクトリにそのまま保存されました。
 ソースコード
https://github.com/smzn/MatlabJava04

2018年3月14日水曜日

Matlab for Java : (3) 連立方程式

MatlabをJavaから使って連立方程式を解きます。
利用する関数は「linsolve」です。
https://jp.mathworks.com/help/symbolic/solve-a-system-of-linear-equations.html

実際のソース
https://github.com/smzn/MatlaJava03

x = a \ b でも解いてみましたが同じになりました。
スラッシュ\ をソース内で利用する場合2個続けて書きます。 x = a \\ b

2018年3月13日火曜日

Matlab for Java : (2) 行列計算:固有値、固有ベクトル、行列式、逆行列

JavaからMatlabを使って行列の固有値、固有ベクトルを求めました。
利用した関数はeigを利用しています。

https://jp.mathworks.com/help/matlab/ref/eig.html
[V,D] = eig(A) は、固有値からなる対角行列 D と、対応する右固有ベクトルを列にもつ行列 V (つまり A*V = V*D) を返します。

行列式も求めました。
d = det(A) は、正方行列 A の行列式を返します。
https://jp.mathworks.com/help/matlab/ref/det.html

逆行列を求めます。
Y = inv(X) は、正方行列 X の逆行列を計算します。
https://jp.mathworks.com/help/matlab/ref/inv.html

今回のソースは以下
https://github.com/smzn/MatlabJava02

2018年3月7日水曜日

Matlab for Java : (1) 基本設定

JavaからMatlabを動かす時の基本設定です。今回はMatlabが提供しているデモプログラムを実行してみます。Eclipseを利用します。
https://jp.mathworks.com/help/matlab/matlab_external/java-example-source-code.html

(1) プロジェクトの作成
プロジェクト名:MatlabTest01
パッケージ名:matlabtest01
クラス名:MatlabTest01.java (main関数つき)

(2) Matlab Jarファイルの追加
MatlabがインストールされているPCでjarファイルの場所を確認します。
\extern\engines\java\jar\engine.jar
僕のPCでは次のようでした。
/Applications/MATLAB_R2017b.app/extern/engines/java/jar/engine.jar
これをBuild Pathから登録します。

(3) デモプログラムの利用
今回のデモプログラムは、 matlabroot/extern/examples/engines/java にある、EngineConsoleDemo.javaを利用します。
このプログラムを実行すると、次のエラーが出ます。
 
(4) ライブラリの追加
デモプログラムにあるReadMeには
To run the example applications, add /bin/maci64 to either the DYLD_LIBRARY_PATH variable or to the Java library search path.
とあります。今回は Java library search pathに登録します。
Build Path から Libraries, Add Library,  User Library を選択
New を選択して、「matlabjava」という名前で作成します。
今作成したものを選択します。
Libraries一覧からmatlabjavaを選ぶと、Native library location があり「None」となっているので、Editします。

ここでパスには
/bin/maci64
を登録するので、僕の場合は
/Applications/MATLAB_R2017b.app/bin/maci64/
を登録します。
 これで実行します。数秒時間がかかりますが、実行できました。
ソースコード
https://github.com/smzn/MatlabJava01

参考
http://sgrit.hatenablog.com/entry/2014/04/27/043015