I have a Java array (my_array in the example below) in my MATLAB workspace that I would like to convert back to a MATLAB array.
whos my_array
  Name       Size            Class                                    
  my_array   20000x1            java.lang.Object[]
I could not find how to convert Java types back to MATLAB types in the External Interfaces documentation. The only thing I found is this (the documentation about MATLAB cells) which says that I can use MATLAB cells to do this task.
Using MATLAB cells seems an overkill, specially when I am handling thousands of elements of the same type (in this case, double). Is there any other way of moving Java objects back into MATLAB's native types?
Example:
%# 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      
                        when I am handling thousands of elements of the same type (in this case, double)
Are you in control of the Java code in question? If this is the case, return a double[] rather than a Double[] array or an Object[] array -- MATLAB will automatically convert a double[] array to a MATLAB vector of doubles.
If you love us? You can donate to us via Paypal or buy me a coffee so we can maintain and grow! Thank you!
Donate Us With