如何在MATLAB中获取枚举的名称

Phi*_*ipp 7 oop matlab enums

我在MATLAB中定义了一个枚举类型

classdef(Enumeration) Color < Simulink.IntEnumType
  enumeration
    RED(0),
    GREEN(1),
    BLUE(2),
  end
end
Run Code Online (Sandbox Code Playgroud)

我可以指定它:

>> x = Color.RED    
x = 
    RED
Run Code Online (Sandbox Code Playgroud)

我可以这样显示:

>> disp(x)
    RED
Run Code Online (Sandbox Code Playgroud)

或者像这样

>> x.display()
x =
    RED
Run Code Online (Sandbox Code Playgroud)

如何以字符串形式访问该名称("RED")?

换句话说,我正在寻找类似的东西:

s = x.toString()
Run Code Online (Sandbox Code Playgroud)

要么

s = tostring(x)
Run Code Online (Sandbox Code Playgroud)

两者都不起作用.

Amr*_*mro 8

您可以使用:

» str = char(Color.RED)
str =
RED
» class(str)
ans =
char
Run Code Online (Sandbox Code Playgroud)

您甚至可以覆盖默认行为:

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
Run Code Online (Sandbox Code Playgroud)

现在:

» char(Color.BLUE)
ans =
Color 2
Run Code Online (Sandbox Code Playgroud)