Logo Questions Linux Laravel Mysql Ubuntu Git Menu
 

Moving from Java types back to MATLAB types

Tags:

java

matlab

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?

like image 413
Amelio Vazquez-Reina Avatar asked Feb 02 '11 00:02

Amelio Vazquez-Reina


2 Answers

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      
like image 106
Amro Avatar answered Oct 24 '22 08:10

Amro


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.

like image 27
Jason S Avatar answered Oct 24 '22 08:10

Jason S