java调用matlab返回值为struct类型的处理

因为项目要用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值

方法很简单,提供个处理思路,大家可按照自己返回的内容处理。