Simulink Enumeration

Hello,
I am trying to do a simple multiport switch. My control is a numeric value.
If 1 is selected, I want my output to be 'Red'. If 2, I want 'Yellow', ect.
I have tried creating a class object for Colors. (thinking this isn't helping)
classdef Colors
properties
R = 0;
G = 0;
B = 0;
end
methods
function c = Colors(r,g,b)
c.R = r; c.G = g; c.B = b;
end
end
enumeration
Red(1, 0, 0)
Orange(1, .5, 0)
Yellow(1, 1, 0)
Green(0, 1, 0)
Blue(0, 0, 1)
Indigo(.2, 0, .8)
Violet(1, 0, 1)
end
end
thus, when I type Colors.Red, I get Red as my output.I used the Enumerated Constant, of output Colors and value Colors.Red. I get error "Initialization commands cannot be evaluated."
Any help would be great, my end goal is to pass a value out of "Red","Yellow"..ect. If I do this as a char or enumerated state I don't care.
thanks.

답변 (2개)

Fangjun Jiang
Fangjun Jiang 2011년 10월 21일

0 개 추천

댓글 수: 2

B. J.
B. J. 2011년 10월 21일
This what what I used to create my class Colors, but I'm having trouble calling it from that point. I cannot seem to pull out "orange" for example. I get constructor errors saying "colors constructor
a = Colors(1, .5, 0)
??? Error using ==> Colors
Cannot call the constructor of 'Colors' outside of its enumeration block.
Fangjun Jiang
Fangjun Jiang 2011년 10월 21일
Should you use a=Colors.Orange? Then you can check a.R, a.G and a.B

댓글을 달려면 로그인하십시오.

Kaustubha Govind
Kaustubha Govind 2011년 10월 24일

0 개 추천

I don't think you can use this kind of enumerated class in Simulink. Simulink enumerated types need to inherit from Simulink.IntEnumType. See Defining Simulink Enumerations.

카테고리

질문:

2011년 10월 21일

Community Treasure Hunt

Find the treasures in MATLAB Central and discover how the community can help you!

Start Hunting!

Translated by