java调用matlab返回值为struct类型的处理
2014年07月08日
编程
因为项目要用java,我这初学java的人就要开始试着调用matlab导出的函数了,这里记录一些内容。
具体java调用matlab函数的过程这里不多说,具体可以看这里:Java和matlab混合编程,Java调用Matlab方法的三种方式,java中调用Matlab的函数+注意事项,这3篇博文涉及的问题比较全面,不过需要在实践中结合具体情况考察方案的可行性。
这里主要讲述matlab返回内容是struct类型(java中为MWStructArray类型)时的一点处理技巧。
我这里函数返回的结构体直接java输出如下:
Comment: 'Mean: ARMAX(0,0,0); Variance: GARCH(1,1) '
Distribution: 'Gaussian'
C: 0.0195
VarianceModel: 'GARCH'
P: 1
Q: 1
K: 0.0055
GARCH: 0.8004
ARCH: 0
Display: 'off'
一开始我也试着通过MWStructArray的get()方法去每一个的值,但由于值的类型是Object,不好转化,最后想出一个偷巧的方法:作为字符串处理
。
代码如下:
MWStructArray result=(MWStructArray)resultObjects[0];//取matlab导出函数的第一个返回值
String string=result.toString();//转化为字符串
String[] list=string.split("\n");//以换行符分割
c=Double.parseDouble(list[2].split(":")[1]);//以':'分割第3行取C值
k=Double.parseDouble(list[6].split(":")[1]);//以':'分割第7行取k值
garch=Double.parseDouble(list[7].split(":")[1]);//以':'分割第8行取GARCH值
arch=Double.parseDouble(list[8].split(":")[1]);//以':'分割第9行取ARCH值
方法很简单,提供个处理思路,大家可按照自己返回的内容处理。