Java调用Matlab方法的三种方式

 问题引出:

 

在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;
		}

	}
}

  

  • 1
    点赞
  • 4
    收藏
    觉得还不错? 一键收藏
  • 1
    评论
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值