Define Categorical Array Inputs
You can define categorical array inputs at the command line.
Programmatic specification of categorical input types by using preconditioning
(assert statements) is not supported.
Define Categorical Array Inputs at the Command Line
Define categorical array inputs at the command line by providing an example input or by
using a categorical coder type. You can also specify a constant
categorical array input.
Provide an Example Categorical Array Input
Use the -args
option:
C = categorical({'r','g','b'});
fiaccel myFunction -args {C}
Provide a Categorical Array Type
To provide a type for a categorical array to fiaccel:
Define a categorical array. For example:
C = categorical({'r','g','b'});Create a type from
C.t = coder.typeof(C);
Pass the type to
fiaccelby using the-argsoption.fiaccel myFunction -args {t}
Provide a Constant Categorical Array Input
To specify that a categorical array input is constant, use coder.Constant with the -args
option:
C = categorical({'r','g','b'});
fiaccel myFunction -args {coder.Constant(C)}
Representation of Categorical Arrays
The coder type object displays a succinct description of the object properties while
excluding internal state values. The command line interface displays the type and size of
nonconstant properties and the values of constant properties. For example, create a coder
categorical type with a size of 3-by-1.
c = categorical({'r','g','b'});
cType = coder.typeof(c);The representation of variable c is stored in coder type object
cType.
cType =
matlab.coder.type.CategoricalType
1x3 categorical
Categories : 3x1 homogeneous cell
Ordinal : 1x1 logical
Protected : 1x1 logical
If necessary, you can obtain the legacy coder.ClassType
representation of a categorical coder type by using the method
getCoderType. For example, to view the underlying
coder.ClassType representation of the cType object,
use this
command:
cType.getCoderType
ans =
coder.ClassType
1×1 categorical
Properties :
codes : :10×1 uint8
categoryNames : :3×1 locked homogeneous cell
base: 1×1 char
isProtected : 1×1 logical
isOrdinal : 1×1 logical
numCategoriesUpperBound : 1×1 double
Object Properties
You can edit the properties of coder categorical type objects. You
can assign scalar values to object properties. Values are implicitly converted to the
corresponding coder type values when they are assigned to coder type object properties. You
can resize objects themselves by using the coder.resize function or by editing object properties
directly.
Resize Object Properties by Using coder.resize
You can resize categorical objects and object properties by using
coder.resize. You can also create arrays within properties.
For example, create a coder categorical type with a size of
3-by-1.
c = categorical({'r','g','b'});
cType = coder.typeof(c)cType =
matlab.coder.type.CategoricalType
1x3 categorical
Categories : 3x1 homogeneous cell
Ordinal : 1x1 logical
Protected : 1x1 logical
Use coder.resize to make Categories
variable-length with an upper bound of
3.
cType.Categories = coder.resize(cType.Categories,[3 1],[true false])
cType =
matlab.coder.type.CategoricalType
1x3 categorical
Categories : :3x1 homogeneous cell
Ordinal : 1x1 logical
Protected : 1x1 logical
Resize Objects Directly
You can also resize certain type objects themselves by editing the object properties.
For example, to change the number of rows in the cType object, edit the
Size
property.
cType.Size = [10 1]
cType =
matlab.coder.type.CategoricalType
10x1 categorical
Categories : :3x1 homogeneous cell
Ordinal : 1x1 logical
Protected : 1x1 logicalYou can also make the number of rows variable size by using the
VarDims
property.
cType.VarDims = [true false]
cType =
matlab.coder.type.CategoricalType
:10x1 categorical
Categories : :3x1 homogeneous cell
Ordinal : 1x1 logical
Protected : 1x1 logicalSee Also
categorical | coder.Constant | coder.newtype | coder.typeof