How to get name of an enumeration in MATLAB

enums, matlab, oop

Solution

You can use:

» str = char(Color.RED)
str =
RED
» class(str)
ans =
char

You can even override the default behaviour:

classdef(Enumeration) Color < int32
 enumeration
  RED(0)
  GREEN(1)
  BLUE(2)
 end

 methods
  function s = char(obj)
   s = ['Color ' num2str(obj)];
   %# or use a switch statement..
  end

  function disp(obj)
   disp( char(obj) )
  end
 end
end

and now:

» char(Color.BLUE)
ans =
Color 2

Problem

I define an enumerated type in MATLAB ``` classdef(Enumeration) Color < Simulink.IntEnumType enumeration RED(0), GREEN(1), BLUE(2), end end ``` I can assign it: ``` >> x = Color.RED x = RED ``` I can display it like this: ``` >> disp(x) RED ``` or like this ``` >> x.display() x = RED ``` How can I get access to that name ("RED") as a string? In other words I'm lookin for something like: ``` s = x.toString() ``` or ``` s = tostring(x) ``` both of which do not work.

Original source