Main Content

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:

  1. Define a categorical array. For example:

    C = categorical({'r','g','b'});
    

  2. Create a type from C.

    t = coder.typeof(C);
    

  3. Pass the type to fiaccel by using the -args option.

    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 logical

You 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 logical

See Also

| | |

Topics