Determine Array Class
Query the Class Name
To determine the class of an array, use the class
function:
a = [2,5,7,11]; class(a)
ans = double
str = 'Character array';
class(str)
ans = char
Test for Array Class
The isa
function enables you to test for a specific class or a category of numeric class (numeric
, float
, integer
):
a = [2,5,7,11];
isa(a,'double')
ans = 1
Floating-point values (single and double precision values):
isa(a,'float')
ans = 1
Numeric values (floating-point and integer values):
isa(a,'numeric')
ans = 1
isa Returns True for Subclasses
isa
returns true for classes derived from the specified class. For example, the SubInt
class derives from the built-in type int16
:
classdef SubInt < int16 methods function obj = SubInt(data) if nargin == 0 data = 0; end obj = obj@int16(data); end end end
By definition, an instance of the SubInt
class is also an instance of the int16
class:
aInt = SubInt;
isa(aInt,'int16')
ans = 1
Using the integer
category also returns true
:
isa(aInt,'integer')
ans = 1
For information on how to distinguish between built-in types and their subclasses, see Test for Subclasses of Built-in Types.
Test for Specific Types
The class
function returns the name of the most derived class of an object:
class(aInt)
ans = SubInt
Use the strcmp
function with the class
function to check for a specific class of an object:
a = int16(7);
strcmp(class(a),'int16')
ans = 1
Because the class
function returns the class name as a char
vector, the inheritance does not affect the result of the comparison performed by strcmp
:
aInt = SubInt;
strcmp(class(aInt),'int16')
ans = 0
Test for Subclasses of Built-in Types
The isa
function returns true for subclasses of the specified
class. To define functions that require inputs that are MATLAB® built-in types but exclude subclasses, use one of these
techniques.
Test for Specific Types
Use strcmp
and class
to test for a
specific built-in type. This conditional statement checks to see if
inputArg
is single
, and if not, it
attempts to convert inputArg
to single
.
if strcmp(class(inputArg),'single') % Call function else inputArg = single(inputArg); end
Test for a Category of Types
Suppose that you create a MEX-function, myMexFcn
, that
requires two numeric inputs that must be of type double
or
single
.
outArray = myMexFcn(a,b)
Define a cell array that contains the character arrays
double
and single
:
floatTypes = {'double','single'};
Use strcmp
and class
to test the
inputs against the types specified in the cell array.
if any(strcmp(class(a),floatTypes)) && ... any(strcmp(class(b),floatTypes)) outArray = myMexFcn(a,b); else % Try to convert inputs to avoid error ... end
Use isobject
Use isobject
to separate built-in
types from subclasses of built-in types. The isobject
function returns false
for instances of built-in
types.
% Create a int16 array
a = int16([2,5,7,11]);
isobject(a)
ans = 0
This conditional tests if arr
is an array is one of the
built-in integer types.
if isa(arr,'integer') && ~isobject(arr) % if previous statement is true, arr is a built-in integer type ... end