我有一个要求,可以生成矩阵图并在JSP上显示这些图。该项目是在Java中开发的,到目前为止,我所有与矩阵有关的操作都是使用MatLabControl API执行的 http://code.google.com/p/matlabcontrol/。在Matlab中创建图并在Java程序中显示它们
我想返回由MATLAB产生的矩阵(特别是特征值矩阵和小波)。 MATLAB提供了一个函数“im2java”,它将图形图像从MATLAB表示转换为java.awt.Image。我用来获取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
这基本上杜绝了上面的代码工作的希望,除非我在使用中不正确。
N.B的代码确实能产生正确的图形它未能在java.awt.Image中
我的问题返回它是:
-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?
我建议保存图像为PNG文件(或内存流)。 –