Documentation

Refer to Enumerations

Instances of Enumeration Classes

Enumeration members are instances of the enumeration class. You can assign enumeration members to variables and form arrays of enumeration members. If an enumeration class derives from a superclass, you can substitute an enumeration member for an instance of the superclass.

TheWeekDaysclass defines enumeration members for five days of the week.

classdefWeekDaysenumerationMonday, Tuesday, Wednesday, Thursday, Fridayendend

Create objects of theWeekDaysclass representing specific days.

today = WeekDays.Monday; tomorrow = WeekDays.Tuesday;

The variablestodayandtomorroware objects of theWeekDaysclass.

ThePPMclass defines three enumeration members. Each member has an associated numeric value derived from the class superclass.

classdefPPM < doubleenumerationHigh (1000) Medium (100) Low (10)endend

Assign an enumeration member to a variable.

level = PPM.High;

When you substitute enumeration members for instances of the superclass, MATLAB®coerces the enumeration member to the superclass. For example, add an enumeration member of thePPMclass with a numeric values

levelNew = level + 100
levelNew = 1100

The result is of classdouble.

whos
Name Size Bytes Class Attributes level 1x1 108 PPM levelNew 1x1 8 double

You can substitute superclass values for enumeration members when the values correspond. For example, pass one of the numeric values defined in the enumeration class to thePPMSwitchfunction.

functionPPMSwitch(ppm)switchppmcasePPM.Low dispLowcasePPM.Medium dispMediumcasePPM.High dispHighendend
PPMSwitch(100)
Medium

You can also use an enumeration member directly:

PPMSwitch(PPM.Medium)
Medium

For information on operations you can perform on enumeration class instances, seeOperations on Enumerations.

Conversion of Characters to Enumerations

Enumeration classes can convertcharvectors to enumeration members when thecharvector represents an enumeration member defined by the class. This conversion enables you to pass a validcharvector or a cell array ofcharvectors when enumerations are expected.

Use acharvector instead of a direct reference to an enumeration member when you want to use a simple character strings to specify an enumeration member. However, specifying an enumeration member directly eliminates the conversion fromcharto enumeration.

Enumeration classes provide a converter function using the constructor syntax.

today = WeekDays('Tuesday');

Because thecharvector'Tuesday'matches the enumeration memberWeekDays.Tuesday,Weekdayscharmethod can perform the conversion.

class(today)
ans =工作日

Create an enumeration array using theWeekDayclass constructor and a cell array ofcharvectors.

wd = WeekDays({'Monday','Wednesday','Friday'})
wd = Monday Wednesday Friday
class(wd)
ans =工作日

Allcharvectors in the cell array must correspond to an enumeration member defined by the class.

强迫的charto Enumerations

MATLAB coercescharvectors into enumerations members when the dominant argument is an enumeration. Because user-defined classes are dominant over thecharclass, MATLAB attempts to convert thecharvector to a member of the enumeration class.

Create an enumeration array. Then insert acharvector that represents an enumeration member into the array.

a = [WeekDays.Monday,WeekDays.Wednesday,WeekDays.Friday]
a = Monday Wednesday Friday

Add acharvector to theWeekDaysarray.

a(end+1) ='Tuesday'
a = Monday Wednesday Friday Tuesday

MATLAB coerces thecharvector to aWeekDaysenumeration member.

class(a)
ans =工作日

Substitute Enumeration Members forcharVectors

You can use enumeration members in place ofcharvectors in cases where functions requirecharvectors. For example, this call tosprintfexpects acharvector, designated by the%sformat specifier.

sprintf('Today is %s',WeekDays.Friday)
ans = Today is Friday

The automatic conversion of enumeration classes tocharenable you to use enumeration members in this case.

Enumeration Arrays

Create enumeration arrays by:

  • Concatenating enumeration members using[]

  • Assigning enumeration members to an array using indexed assignment

Create an enumeration array of classWeekDaysby concatenating enumeration members:

wd = [WeekDays.Tuesday,WeekDays.Wednesday,WeekDays.Friday];

Create an enumeration array of classWeekDaysby indexed assignment:

a(1) = WeekDays.Tuesday; a(2) = WeekDays.Wednesday; a(3) = WeekDays.Friday;

Mixed Enumeration Members andcharVectors

You can concatenate enumeration members andcharvectors as long as thecharvector represents an enumeration member.

clearaa = [WeekDays.Wednesday,'Friday']; class(a)
ans =工作日

You can also assign acharvector to an enumeration array:

clearaa(1) = WeekDays.Wednesday; a(2) ='Friday'; class(a)
ans =工作日

Default Enumeration Member

The default member an enumeration class is the first enumeration member defined in the enumeration block. For theWeekDaysclass, the default enumeration member isWeekDays.Monday.

classdefWeekDaysenumerationMonday, Tuesday, Wednesday, Thursday, Fridayendend

MATLAB allows assignment to any element of an array, even if the array variable does not previously exist. To fill in unassigned array elements, MATLAB uses the default enumeration member.

For example, assign a value to element 5 of an array,a:

clearaa(5) = WeekDays.Tuesday;

MATLAB must initialize the values of array elementsa(1:4)with the default enumeration member. The result of the assignment to the fifth element of the arrayais:

a
a = Monday Monday Monday Monday Tuesday

Related Topics

Was this topic helpful?