从Java类型转回MATLAB类型

Ame*_*ina 5 java matlab

my_array在我的MATLAB工作区中有一个Java数组(在下面的例子中),我想将其转换回MATLAB数组.

whos my_array

  Name       Size            Class                                    

  my_array   20000x1            java.lang.Object[]
Run Code Online (Sandbox Code Playgroud)

我无法在外部接口文档中找到如何将Java类型转换回MATLAB类型.我发现的唯一的事情就是这个(关于MATLAB单元的文档),它说我可以用MATLAB单元来完成这个任务.

使用MATLAB cells似乎有点矫枉过正,特别是当我处理相同类型的数千个元素时(在本例中double).有没有其他方法将Java对象移回MATLAB的本机类型?

Amr*_*mro 6

例:

%# example Object[] array
my_array = javaArray('java.lang.Object', 5);
for i=1:5, my_array(i) = java.lang.Double(i); end

%# convert to MATLAB vector
M = arrayfun(@(x)x, my_array);

%# or equivalently
M = cell2mat( cell(my_array) );

>> whos M
  Name      Size            Bytes  Class     Attributes

  M         5x1                40  double      
Run Code Online (Sandbox Code Playgroud)