gpt4 book ai didi

java - 在 Matlab 中创建图形并在 Java 程序中显示它们

转载 作者:行者123 更新时间:2023-12-03 23:13:41 26 4
gpt4 key购买 nike

我需要生成矩阵图并在 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

这基本上结束了上述代码工作的任何希望,除非我在使用中不正确。

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?

最佳答案

这是导致异常的行吗?

matlabPlotImage = (Image)returnedMatlabArguements[0];

回答你的问题

“-上面的代码是将图像从 Matlab 返回到 Java 程序的正确/唯一方法吗?”

您可以从 Matlab 调用 java 类,这样您也可以在 Matlab 文件中使用 java 并调用它来替换

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

抛出错误是因为 Image 不可序列化。一种选择是使用 matlab 或 java 将其保存为某种图像格式(jpg、png、tiff)的文件,并返回文件而不是图像。

“-如果是的话,什么是使用 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?

关于java - 在 Matlab 中创建图形并在 Java 程序中显示它们,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/10384320/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com