问题引出:
在Java中调用Matlab的方法时,有三种方式。大致都有2个参数,第一个参数是定义输出结果,第二个参数为输入参数。
方式一:functionName(int arg0, Object... agr1): Object[]
方式二:functionName(List arg0, List agr1): void
方式三:functionName(Object[] arg0, Object[] agr1): void
结论:
三种方式中,方式一最常用;个人推荐方式三,因为其更简洁、代码可读性更强;方式二则有点绕。
案例解释:
下面以Matlab JA Builder中的MagicSquare中的案例来解释说明。
方式一:functionName(int arg0, Object... agr1): Object[]
// 定义输出结果 Object[] results = null; Magic magic = new Magic(); // '2' 标识了要得到2个输出结果,最后results在调用了方法后,变成results=new Object[2]; // '5' 表示输入的参数是数字‘5’ results = magic.makesqr(2, 5); // 输出第一个返回内容 System.out.println(results[0]); // 输出第二个返回内容 System.out.println(results[1]);
方式二:functionName(List arg0, List agr1): void
// 定义结果List List<Object> results = new ArrayList<Object>(2); // 定义参数List List<Object> inputs = new ArrayList<Object>(1); Magic magic = null; magic = new Magic(); // 注意:结果List要预先加入内容,Null即可 results.add(null); results.add(null); // 输入的参数 inputs.add(5); // 调用方法 magic.makesqr(results, inputs); // 显示结果 System.out.println(results.get(0)); System.out.println(results.get(1));
方式三:functionName(Object[] arg0, Object[] agr1): void
// 注意:定义输出结果的时候,要定义数组大小 Object[] results = new Object[2]; Magic magic = null; magic = new Magic(); // 这种方式,第二参数必须为数组,而不能为可变数组 Object[] inputs = new Object[]{5}; magic.makesqr(results, inputs); // 输出第一个返回内容 System.out.println(results[0]); // 输出第二个返回内容 System.out.println(results[1]);
最后附上完整的代码
import makesquare.Magic; import com.mathworks.toolbox.javabuilder.MWArray; import com.mathworks.toolbox.javabuilder.MWException; public class MagicSquare3 { public static void main(String[] args) { Object[] results = new Object[2]; Magic magic = null; try { magic = new Magic(); // 这种方式,第二参数必须为数组,而不能为可变数组 Object[] inputs = new Object[]{5}; magic.makesqr(results, inputs); // 输出第一个返回内容 System.out.println(results[0]); // 输出第二个返回内容 System.out.println(results[1]); } catch (MWException e) { e.printStackTrace(); } finally { MWArray.disposeArray(results); if (magic != null) { magic.dispose(); } magic = null; } } }
相关推荐
Java与Matlab的交互是数据处理和分析领域中经常遇到的需求,特别是对于那些熟悉Java编程但需要使用Matlab强大数学和图形处理功能的开发者来说。本文介绍了如何在Java程序中调用Matlab程序的方法,重点说明了使用...
Java 程序调用 MATLAB 接口是 Java 和 MATLAB 之间的交互接口,允许 Java 程序调用 MATLAB 的函数和方法。本文将详细介绍 Java 程序调用 MATLAB 接口的注意事项、环境安装、MATLAB 如何生成 JAR 包和 MATLAB 生成的 ...
总的来说,Java调用MATLAB是一种强大但需要谨慎使用的技术。它允许开发者利用MATLAB的计算能力,同时利用Java的跨平台和面向对象特性。通过深入理解和实践`java_call_matlab.zip`中的内容,可以更有效地整合这两种...
描述中提到的“包含2个MATLAB的java工程,1个java调用MATLAB的工程”,这意味着我们有三个主要部分: 1. **MATLAB工程1**:可能包含了用于处理图像的MATLAB代码,例如图像预处理、分析或转换。 2. **MATLAB工程2**...
java调用matlab程序的一个applet-java调用matlab.txt 最近在做java实现多Agent,如有同志可相互切磋,现附上一段java调用matlab程序的程序,希望能帮到有需要的同仁。
在Java程序中调用Matlab函数,介绍了在java中怎样调用matlab函数来进行矩阵的分析操作
1. **在Java程序中直接调用MATLAB函数**:无需通过.m文件作为中介,而是直接在Java环境中使用MATLAB的计算资源。 2. **构建用户界面**:可以在MATLAB的.m文件中直接调用Java图形界面组件来构建复杂且交互性强的用户...
在本文中,我们将讨论Java与Matlab混合编程的技术,具体来说是使用JSP调用Matlab生成的Figure并在网页中显示。我们将从环境配置开始,逐步介绍混合编程的步骤,并最终实现网页中的Figure显示。 一、环境配置 在...
Java调用Matlab进行混合编程是一种常见的技术,它允许开发者利用Matlab强大的数值计算和科学分析能力,同时结合Java的跨平台和系统集成优势。以下是对这个详细过程的深入解析: 1. **Matlab程序准备**: - 首先,...
Java中通过Com Builder的方式调用Matlab作图的示例。 具体说明请参考博客http://blog.csdn.net/xiaowei_cqu/article/details/7038819
然后,使用MATLAB Compiler SDK将M文件编译为Java类。这一步会生成一个Java包,其中包含一个或多个Java类,这些类封装了M文件的功能。在编译过程中,你可能需要设置一些编译选项,比如输入输出参数类型,以适应Java...
总之,Java调用MATLAB进行文件到二进制流的转换是一种灵活的方法,特别是在已有的MATLAB算法需要集成到Java项目时。然而,它需要理解MATLAB和Java之间的交互机制,以及对二进制数据处理的理解。通过不断学习和实践,...
接着,使用MATLAB的部署工具`deploytool`来构建该函数。有两种方式可以启动`deploytool`:在MATLAB命令行中输入`deploytool`命令,或者在MATLAB界面中选择相应的图标。在`deploytool`界面中,可以选择项目名称和项目...
从 MATLAB 中调用 Java 可以通过多种方式实现,包括使用 Java 的类库和方法、使用 Java 的构造函数和方法、使用 Java 的数组对象等。例如,我们可以使用 Java 的_util 包来实现数据分析和可视化功能,或者使用 Java ...
Java基于MCR的本地远程调用Matlab函数库
本文将详细阐述配置要求、环境配置、Java Builder的使用以及在Java工程中调用Matlab组件的关键步骤。 一、配置要求 要成功建立Matlab与Java的接口,首先需要满足以下条件: 1. MATLAB版本:至少要求R2006b(MATLAB ...
1. **编译命令:** 使用Matlab提供的编译命令将M文件编译为JAR文件。 - 常用命令: `mcc -m filename.m` (生成一个.mex文件和一个.mat文件) - 或者: `mcc -W java:packagename.Classname -d outputdir -T link:lib -...