External Interfaces/API |
Converting Objects to MATLAB Data Types
With the exception of objects of class String
and class Object
, MATLAB does not convert Java objects returned from method calls to a native MATLAB data type. If you want to convert Java object data to a form more readily usable in MATLAB, there are a few MATLAB functions that enable you to do this. These are described in the following sections.
Converting to the MATLAB double Data Type
Using the double
function in MATLAB, you can convert any Java object or array of objects to the MATLAB double
data type. The action taken by the double
function depends on the class of the object you specify:
java.lang.Number
or one of the classes that inherit from that class), then MATLAB uses a preset conversion algorithm to convert the object to a MATLAB double
.
toDouble
. Note that MATLAB uses toDouble
to perform its conversion of Java objects to the MATLAB double
data type. If such a method is implemented for this class, MATLAB executes it to perform the conversion.
toDouble
method to perform conversions on objects of that class to a MATLAB double
. This enables you to specify your own means of data type conversion for objects belonging to your own classes.
The syntax for the double
command is as follows, where object
is a Java object or Java array of objects.
Converting to the MATLAB char Data Type
With the MATLAB char
function, you can convert java.lang.String
objects and arrays to MATLAB data types. A single java.lang.String
object converts to a MATLAB character array. An array of java.lang.String
objects converts to a MATLAB cell array, with each cell holding a character array.
If the object specified in the char
command is not an instance of the java.lang.String
class, then MATLAB checks its class to see if it implements a method named toChar
. If this is the case, then MATLAB executes the toChar
method of the class to perform the conversion. If you write your own class definitions, then you can make use of this feature by writing a toChar
method that performs the conversion according to your own needs.
The syntax for the char
command is as follows, where object
is a Java object or Java array of objects.
Converting to a MATLAB Structure
Java objects are similar to the MATLAB structure
in that many of an object's characteristics are accessible via field names defined within the object. You may want to convert a Java object into a MATLAB structure
to facilitate the handling of its data in MATLAB. Use the MATLAB struct
function on the object to do this.
The syntax for the struct
command is as follows, where object
is a Java object or Java array of objects.
The following example converts a java.awt.Polygon
object into a MATLAB structure
. You can access the fields of the object directly using MATLAB structure
operations. The last line indexes into the array, pstruct.xpoints
, to deposit a new value into the third array element.
polygon = java.awt.Polygon([14 42 98 124], [55 12 -2 62], 4); pstruct = struct(polygon) pstruct = npoints: 4 xpoints: [4x1 int32] ypoints: [4x1 int32] pstruct.xpoints ans = 14 42 98 124 pstruct.xpoints(3) = 101;
Converting to a MATLAB Cell Array
Use the cell
function to convert a Java array or Java object into a MATLAB cell array. Elements of the resulting cell array will be of the MATLAB type (if any) closest to the Java array elements or Java object.
The syntax for the cell
command is as follows, where object
is a Java object or Java array of objects.
In the following example, a MATLAB cell array is created in which each cell holds an array of a different data type. The cell
command used in the first line converts each type of object array into a cell array.
import java.lang.* java.awt.*; % Create a Java array of double dblArray = javaArray('java.lang.Double', 1, 10); for m = 1:10 dblArray(1, m) = Double(m * 7); end % Create a Java array of points ptArray = javaArray('java.awt.Point', 3); ptArray(1) = Point(7.1, 22); ptArray(2) = Point(5.2, 35); ptArray(3) = Point(3.1, 49); % Create a Java array of strings strArray = javaArray('java.lang.String', 2, 2); strArray(1,1) = String('one'); strArray(1,2) = String('two'); strArray(2,1) = String('three'); strArray(2,2) = String('four'); % Convert each to cell arrays cellArray = {cell(dblArray), cell(ptArray), cell(strArray)} cellArray = {1x10 cell} {3x1 cell} {2x2 cell} cellArray{1,1} % Array of type double ans = [7] [14] [21] [28] [35] [42] [49] [56] [63] [70] cellArray{1,2} % Array of type Java.awt.Point ans = [1x1 java.awt.Point] [1x1 java.awt.Point] [1x1 java.awt.Point] cellArray{1,3} % Array of type char array ans = 'one' 'two' 'three' 'four'
Java Objects | Introduction to Programming Examples |