如何将字符串转换为枚举?

Ric*_*ton 8 matlab enums

将枚举转换为字符数组非常简单 - 只需调用即可char.

char(myenum.somevalue)
Run Code Online (Sandbox Code Playgroud)

回报'somevalue'.

如何转换回来?我期待着像是char2enum在哪里

char2enum('somevalue', 'myenum')
Run Code Online (Sandbox Code Playgroud)

回报myenum.somevalue.

是否有内置函数或我必须创建自己的函数?

Nic*_*dad 6

您可以使用 MATLAB Dynamic 引用功能通过字符串名称(而不是符号名称)来访问枚举。例如,给定一个类Weekdays

classdef Weekdays
   enumeration
    Monday, Tuesday, Wednesday, Thursday, Friday
   end
end
Run Code Online (Sandbox Code Playgroud)

Friday您可以通过多种方式访问​​该类型:

>> Weekdays.Friday  % Access symbolically

>> Weekdays.('Friday') % Access as a string
Run Code Online (Sandbox Code Playgroud)

如果您有一个字符串变量,其名称也可以工作:

>> day = 'Friday'
>> Weekdays.(day)
Run Code Online (Sandbox Code Playgroud)

顺便说一句,此功能适用于 MATLAB 类方法、属性和事件以及结构字段。

http://www.mathworks.com/help/matlab/matlab_prog/bsgigzp-1.html#bsgigzp-33


Jon*_*nas 5

从角色创建枚举也相当简单:只需创建枚举:

out = myenum.somevalue

返回类myenum和值somevalue.

如果您的字符串在变量中,请调用

someVariable = somevalue;
out = myenum.(someVariable)
Run Code Online (Sandbox Code Playgroud)