Как преобразовать строки в перечисления? - PullRequest
8 голосов
/ 22 декабря 2010

Чтобы преобразовать перечисление в массив символов, достаточно просто - вы просто вызываете char.

char(myenum.somevalue)

, возвращает 'somevalue'.

Как преобразовать обратно?Я ожидал что-то вроде char2enum, где

char2enum('somevalue', 'myenum')

возвращает myenum.somevalue.

Есть встроенная функция для этого или я должен создать свою собственную?

Ответы [ 2 ]

5 голосов
/ 22 декабря 2010

Создание перечисления из символа также довольно просто: просто создайте перечисление:

out = myenum.somevalue

возвращается с классом myenum и значением somevalue.

Если ваша строка находится в переменной, вызовите

someVariable = somevalue;
out = myenum.(someVariable)
4 голосов
/ 22 декабря 2010

Вы можете использовать динамическую справочную функцию MATLAB для доступа к перечислению по его имени в виде строки вместо его символического имени.Например, учитывая класс Weekdays

classdef Weekdays
   enumeration
    Monday, Tuesday, Wednesday, Thursday, Friday
   end
end

Вы можете получить доступ к типу Friday двумя способами:

>> Weekdays.Friday  % Access symbolically

>> Weekdays.('Friday') % Access as a string

Если у вас есть строковая переменная с именемкласса, который тоже работает:

>> day = 'Friday'
>> Weekdays.(day)

Кстати, эта функция работает для методов, свойств и событий класса MATLAB, а также структурных полей.

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

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...