Java调用Matlab,计算两个矩阵相加的和,为什么打印不出来结果

滑滑的影子 2017-05-09 06:36:46
	protected void buttonPerformed3_1(ActionEvent e) {

String str3 = textField_1.getText();//输入第一行文本,例如1,2,3,4,5,6,7,8,9
String str4 = textField_2.getText();//输入第二行文本,规则同上
String[] strArr3 = str3.split(",");
String[] strArr4 = str4.split(",");
//将接收到的文本转化为double数组
int index = 0;
double array3[][] = new double[3][3];
double array4[][] = new double[3][3];
for (int i = 0; i < 3; i++) {
for (int j = 0; j < 3; j++) {
array3[i][j] = Double.parseDouble(strArr3[index]); //array3[][] ={[1,2,3][4,5,6][7,8,9]}
array4[i][j] = Double.parseDouble(strArr4[index]);
index++;
}
}

// 创建矩阵对象
MWNumericArray A = new MWNumericArray((array3), MWClassID.SINGLE);
MWNumericArray B = new MWNumericArray((array4), MWClassID.SINGLE);
MWNumericArray C =null;
Object[] obj = null;
Mymatrix matrix = null;//m文件,返回两个矩阵的和
try {
matrix = new Mymatrix();
obj = matrix.myadd(0, A, B);//为什么前面不加0会报错,我的函数只需要两个参数 function c = myadd(a,b)
} catch (MWException e1) {
e1.printStackTrace();
return;
}
//不需要输出语句,控制台已经自动出现矩阵结果,不明白原因,是不是我的m文件写得有问题
//用输出语句却打印不出矩阵了
System.out.println(obj); //打印结果:[Ljava.lang.Object;@58faf771
System.out.println(obj[0]);//这句话会报错,obj[]数组0角标为什么也会越界Exception in thread "AWT-EventQueue-0" java.lang.ArrayIndexOutOfBoundsException: 0
}

下面是.m文件里的代码
function c = myadd(a,b)
c = a+b
...全文
210 2 打赏 收藏 转发到动态 举报
写回复
用AI写文章
2 条回复
切换为时间正序
请发表友善的回复…
发表回复
滑滑的影子 2017-05-10
  • 打赏
  • 举报
回复
问题已解决,原因在于调用m文件时传参有问题
obj = matrix.myadd(0, A, B);
第一个参数代表着函数返回的参数个数,如果不需要返回值才写0,需要一个返回值应该写为
obj = matrix.myadd(1, A, B);
这样obj可以接收到参数了,可以轻松获取到obj[0]了
滑滑的影子 2017-05-09
  • 打赏
  • 举报
回复
也试过用MWNumericArray C 接收obj[0],可是直接报错,原因还是越界,这是怎么回事

51,411

社区成员

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

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