我需要生成矩阵图并在 JSP 上显示这些图。该项目是用 Java 开发的,到目前为止,我所有与矩阵相关的操作都是使用 MatLabControl API http://code.google.com/p/matlabcontrol/执行的。
我想返回 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
这基本上结束了上述代码工作的任何希望,除非我的使用不正确。
注意代码确实生成了正确的图形,但无法在 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?