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