java调用matlab调用java程序含有多个输入参数

java调用matlab返回值精度问题 - ITeye问答
前提:用matlab写了个二次优化的方法,depoly以后在java中可以正常调用。
&&&&& matlab中方法: function [E,fval] = Nolinear_Opt()
&&&&& java中方法:&& Object[] obj= nolinear_Opt.Nolinear_Opt(2);
问题:调用的返回结果为Object[] obj,其中,obj[0]应该是一个double[],但是现在返回的字符串类似“0.8 0.2222...",也就是本应该是double精度的结果被缩减为了小数点后四位,请问该如何解决?
问题补充:liuqing_2010_07 写道这个在你在Matlab中中函数中计算完后,自己设置一下精度,或者转化为科学计数法。
这样matlab在将自己的对象转化为java的double时就会得到你想要的精度。
我尝试在matlab结果输出之前转化精度,代码如下:
需要返回的结果:[E,fval]=fmincon(@fun,E0,[],[],[],[],vlb,vub,@mycon);
E=vpa(E);
fval=vpa(fval);
其中E是一维数组,目的就是想让数组里面的值为double型,但是加了这两行代码后再matlab中执行没有问题,在java中就会报“Undefined function 'vpa' for input arguments of type 'double'”的错误。
matlab不熟,望指点。
问题补充:liuqing_2010_07 写道
Undefined function 'vpa' for input arguments of type 'double'
你把函数'vpa' 的参数类型设为double就可以了。
尝试了一下,在最开始加上就可以了,但是奇怪的是同样的输入在matlab上跑出来的结果和在java里面跑出来的结果在小数点5位后差别很大??
采纳的答案
Undefined function 'vpa' for input arguments of type 'double'
你把函数'vpa' 的参数类型设为double就可以了。
这个在你在Matlab中中函数中计算完后,自己设置一下精度,或者转化为科学计数法。
这样matlab在将自己的对象转化为java的double时就会得到你想要的精度。
已解决问题
未解决问题鍗氬?鍒嗙被锛}

我要回帖

更多关于 java调用matlab函数 的文章

更多推荐

版权声明:文章内容来源于网络,版权归原作者所有,如有侵权请点击这里与我们联系,我们将及时删除。

点击添加站长微信