2010-02-22 11 views
7

zdefiniować typ wymienionych w MATLABJak uzyskać nazwę wyliczenie w MATLAB

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

mogę go przypisać:

>> x = Color.RED  
x = 
    RED 

mogę wyświetlić go w ten sposób:

>> disp(x) 
    RED 

lub jak to

>> x.display() 
x = 
    RED 

Jak uzyskać dostęp do tej nazwy ("RED") jako ciąg?

Innymi słowy patrzę na coś takiego:

s = x.toString() 

lub

s = tostring(x) 

z których oba nie działają.

Odpowiedz

8

Można użyć:

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

Można nawet zastąpić domyślne zachowanie:

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 

i teraz:

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

Uwaga: Ponieważ nie mam Simulink, testowałem powyżej, używając definicji: 'classdef (Enumeration) Color Amro

+0

Czy przetestowałeś, czym właściwie był' str'? Nie mogę przetestować go teraz, ale myślę, że to może po prostu przekształcić * całkowitą reprezentację * wyliczonego typu na 'char' (tj.' Char (0) '). – gnovice

+1

@gnovice: wraca '" RED "' zgodnie z oczekiwaniami – Amro