2012-04-30 8 views
3

行列のグラフを作成し、これらのグラフをJSPで表示する必要があります。プロジェクトはJavaで開発されており、マトリックスに関する私の操作はMatLabControl API http://code.google.com/p/matlabcontrol/を使って実行されています。Matlabでグラフを作成し、Javaプログラムで表示する

私はMATLAB(特に固有値行列とウェーブレット)によって生成された行列を返したいと思っていました。 MATLABは、グラフイメージをMATLAB表現からjava.awt.Imageに変換する関数 "im2java"を提供します。次のようにMatlabControlの画像データを取得するために使用私のコードは以下のとおりであった:

public Image produceEigenValueGraph(final double [][] matrix) { 
final double [][] maxEigenValueMatrix = 
      extractOutMaxEigenValues(matrix); 
    Image matlabPlotImage = null; 
    try { 
     MatlabNumericArray matLabEigenValueMatrix = 
       new MatlabNumericArray(maxEigenValueMatrix, null); 
     matLabTypeConverter.setNumericArray("eigen", 
              matLabEigenValueMatrix); 
     matLabProxy.setVariable("amountOfTime", matrix.length - 1); 
     matLabProxy.eval("time"); 
     matLabProxy.eval("plot(time, eigen)"); 
     matLabProxy.eval("frame=getframe"); 
     final Object [] returnedMatlabArguements = 
       matLabProxy.returningEval("im2java(frame.cdata)", 1); 
     matlabPlotImage = 
       (Image)returnedMatlabArguements[0]; 
    } catch (MatlabInvocationException mie) { 
     mie.printStackTrace(); 
    } 
    return matlabPlotImage; 
} 

コードは、ネストされた例外を返します:

基本的にしない限り、上記のコードの作業のいずれかの希望に終止符を置く
Caused by: java.io.WriteAbortedException: writing aborted; 
java.io.NotSerializableException: sun.awt.image.ToolkitImage 

私は私の使用に間違っています。

-Is the above code the correct/only way to return images to a java program from Matlab? 
    -If it is what would be the best alternatives to using Matlab, Java API or otherwise? 
+0

私はPNGファイル(またはメモリストリーム)に画像を保存することをお勧めします。 –

答えて

0

が、これは例外が発生行です:

N.Bコードがあり、それが

私の質問はjava.awt.Image

でそれを返すことに失敗し、正しいグラフを生成していますか?あなたの質問

への答えで

matlabPlotImage = (Image)returnedMatlabArguements[0]; 

「は、上記のコードをMATLABからJavaプログラムに画像を戻す唯一の/正しい方法を-is?」

あなたもMATLABファイルでJavaを使用するとイメージがシリアライズではないため、エラーがスローされ

final Object [] returnedMatlabArguements = matLabProxy.returningEval("im2java(frame.cdata)", 1); 
matlabPlotImage = (Image)returnedMatlabArguements[0]; 

を交換することを呼び出すことができますので、あなたは、MATLABからJavaクラスを呼び出すことができます。オプションは、matlabまたはjavaのいずれかを使用してイメージ形式(jpg、png、tiff)でファイルとして保存し、ImageではなくFileを返すことです。

「Matlab、Java APIなどを使用するのに最適な方法は何ですか?」

Mathworksでは、実装できる多くの線形代数計算を実行するためのJava APIを提供しています。 http://math.nist.gov/javanumerics/jama/#Package

また、Apache Commons Mathプロジェクトでは、さまざまな線形代数関数やその他のツールを提供しています。 http://commons.apache.org/math/userguide/linear.html

私はJavaでグラフの提案のための他の記事をチェックします

constructing graphs in Java

Java Graphing Libraries for Web Applicattions?

関連する問題