2010-02-22 18 views
7

defino un tipo enumerado en MATLABComo llegar nombre de una enumeración en MATLAB

classdef(Enumeration) Color < Simulink.IntEnumType 
    enumeration 
    RED(0), 
    GREEN(1), 
    BLUE(2), 
    end 
end 

puedo asignarle:

>> x = Color.RED  
x = 
    RED 

puedo mostrar de esta manera:

>> disp(x) 
    RED 

o como esto

>> x.display() 
x = 
    RED 

¿Cómo puedo obtener acceso a ese nombre ("ROJO") como una cadena?

En otras palabras, yo estoy buscando para algo como:

s = x.toString() 

o

s = tostring(x) 

ambos de los cuales no funcionan.

Respuesta

8

Se puede utilizar:

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

Usted puede incluso anular el comportamiento por defecto:

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 

y ahora:

» char(Color.BLUE) 
ans = 
Color 2 
+0

nota: ya no tengo Simulink, he probado el arriba usando la definición: 'classdef (Enumeration) Color Amro

+0

¿Has probado lo que' str' en realidad era? No puedo probarlo ahora mismo, pero creo que esto podría convertir la * representación del entero * del tipo enumerado a 'char' (es decir,' char (0) '). – gnovice

+1

@gnovice: está devolviendo '" RED "' como se esperaba – Amro