java和matlab混合编程 java调用.jar包中方法时参数传递问题

baiding1123 2014-05-22 06:02:42
毕设涉及到了Java和matlab的混合编程,配置好了本机的环境,参照网上的方法实现了一个小例子:
matlab
1.编写:myadd.m
----------------------------------------------------
function y = myadd(a,b)
y = a+b;
end
----------------------------------------------------
用deploytool编译为生成myadd.prj,将工程中的myadd.jar包拷贝到Myeclipse建的项目文件中,并加入项目的build path中,再将javabuilder.jar添加到项目的build path中。

在项目中添加类:MJNuilderTest
导入相关包后的这个类文件:
package com.matlab.test;
import java.util.Scanner;
import myadd.Myfun;
import com.mathworks.toolbox.javabuilder.MWArray;
import com.mathworks.toolbox.javabuilder.MWClassID;
import com.mathworks.toolbox.javabuilder.MWNumericArray;


public class MJBuilderTest {

/**
* @param args
*/
public static void main(String[] args) throws Exception{
// TODO Auto-generated method stub
MWNumericArray a = null;
MWNumericArray b = null;
Object[]result = null;
Myfun myadd = null;
String[] args1;
Scanner scanner= new Scanner(System.in);
System.out.println("请输入两个数:A,B\n");
args1 = scanner.nextLine().split(",");
try{
if(args1.length != 2){
System.out.println("error:must input two numbers!");
return;

}
//把值先变成matlab能理解的double类型
a = new MWNumericArray(Double.valueOf(args1[0]),MWClassID.DOUBLE);
b = new MWNumericArray(Double.valueOf(args1[1]),MWClassID.DOUBLE);

myadd = new Myfun();
//计算输出结果
result = myadd.myadd(1, a,b);
System.out.println("\nThe summ of "+a.toString()+" and "+b.toString()+" is:\n");
System.out.println(result[0]);


}catch (Exception e) {
// TODO: handle exception
System.out.println("Exception! "+e.toString());
}finally{
//free native resoures
MWArray.disposeArray(a);
MWArray.disposeArray(b);
MWArray.disposeArray(result);

if(myadd != null)
myadd.dispose();

}

}

}
经运行测试:结果正常

----------------------------------------------------------------------------------------------------------------------------------------------------------
2.测试结束后用同样的方法做我的程序:

m文件:bwtraceboundary_proc4.m [matlab2012a环境下面运行无误]

bwtraceboundary_proc4.m 内容:
http://blog.csdn.net/baiding1123/article/details/26608343
按照上面的方法打包,添加到MyEclipse项目中的build path中。


实现的类:

package com.matlab.test;

import java.util.Scanner;
import BwtraceBoundary.*;
import com.mathworks.toolbox.javabuilder.*;
import com.sun.xml.internal.bind.v2.runtime.Name;
public class MyTracetest {

public static void main(String[] args)throws Exception{
// TODO Auto-generated method stub

Object[] resultObjects = null;//保存结果
MWNumericArray posnum = null;// 参数a
int num = 9600;

try {

BwtraceBoundary_Pro btProc4 = new BwtraceBoundary_Pro();
posnum = new MWNumericArray(num,MWClassID.INT16);
String filename = new String("d:/deep.jpg");
//出错部分: 调用这个方法的时候参数究竟该怎么填??
resultObjects = btProc4.bwtraceboundary_proc4(1,filename,posnum);

} catch (Exception e) {
// TODO: handle exception
System.out.println("Exceptin: "+e.toString());
}finally{
MWArray.disposeArray(resultObjects);
MWArray.disposeArray(posnum);


}
}
}
调用该方法的时候系统提示:

我要填的两个参数为(图片的路径,最大点数)
为什么会成为(int,Objects[])?
报错信息:
Exception in thread "main" java.lang.Error: Unresolved compilation problem:
The method bwtraceboundary_proc4(int, Object[]) in the type BwtraceBoundary_Pro is not applicable for the arguments (int, String, MWNumericArray)

at com.matlab.test.MyTracetest.main(MyTracetest.java:21)


不了解它的原理,麻烦会这方面的大哥大姐帮帮忙,谢谢!!!




...全文
1757 9 打赏 收藏 转发到动态 举报
AI 作业
写回复
用AI写文章
9 条回复
切换为时间正序
请发表友善的回复…
发表回复
qq_16568205 2018-06-30
  • 打赏
  • 举报
回复
讲道理我觉得参数调用没错,不知道错在哪里,楼主有空回复一下
leiming01 2018-05-21
  • 打赏
  • 举报
回复
注意那是个对象数组,也就是说你可以将你的多个参数放到对象数组里面进行参数传递。
willxiang 2016-07-01
  • 打赏
  • 举报
回复
最讨厌的是什么呢?最讨厌的是楼主自己解决问题后就说一句“以解决”。然后没有下文了。考虑一下搜到这个问题的其他不知道如何解决的人的感受好嘛。。。
林静hjk 2015-11-15
  • 打赏
  • 举报
回复
问题怎么解决的,求教
baba13579 2015-04-30
  • 打赏
  • 举报
回复
问题怎么解决的,求指教
moosefly 2014-10-16
  • 打赏
  • 举报
回复
楼主您好,请问The method bwtraceboundary_proc4(int, Object[]) in the type BwtraceBoundary_Pro is not applicable for the arguments (int, String, MWNumericArray)问题是怎样解决的?
baiding1123 2014-06-20
  • 打赏
  • 举报
回复
问题已经解决,结贴了。
baiding1123 2014-05-23
  • 打赏
  • 举报
回复
没人帮忙 啊啊 急 。。。
tony4geek 2014-05-23
  • 打赏
  • 举报
回复
好像 matlab 用的挺多的。

51,397

社区成员

发帖
与我相关
我的任务
社区描述
Java相关技术讨论
javaspring bootspring cloud 技术论坛(原bbs)
社区管理员
  • Java相关社区
  • 小虚竹
  • 谙忆
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧