2010-02-22 53 views
7

在MATLAB得到一個枚舉的名字我定義枚舉類型如何在MATLAB

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

我可以爲它分配:

>> disp(x) 
    RED 

>> x = Color.RED  
x = 
    RED 

我可以這樣顯示出來

或類似

>> x.display() 
x = 
    RED 

如何才能以字符串的形式訪問該名稱(「RED」)?

換句話說,我看着這樣的事情:

s = x.toString() 

s = tostring(x) 

兩者不工作。

回答

8

您可以使用:

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

你甚至可以覆蓋缺省行爲:

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 

現在:

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

注:因爲我沒有SIMULINK,我測試了上面使用了定義:'classdef(Enumeration)Color Amro 2010-02-22 18:46:47

+0

你測試了什麼'str'實際上是?我現在不能測試它,但我認爲這可能只是將枚舉類型的*整數表達*轉換爲一個'char'(即'char(0)')。 – gnovice 2010-02-22 19:41:52

+1

@gnovice:正如預期的那樣返回'「RED」 – Amro 2010-02-22 19:59:59