How do I list values of the Simulink Enumeration definitions ?
38 visualizaciones (últimos 30 días)
Mostrar comentarios más antiguos
Ozan Yüksel
el 2 de Abr. de 2019
Comentada: riccardo
el 14 de Oct. de 2020
So I am trying to write a script to parse the .sldd format of simulink data dictionary.
I need to get all the possible values of an enumeration type as string.
I can list enum type definitions by:
enumTypeDefs = find(sectionObj, '-value','-class','Simulink.data.dictionary.EnumTypeDefinition')
This returns an array of Entry ebjects.
After this command when I run
getValue(enumTypeDefs(1))
It returns and displays values as part of Simulink.data.dictionary.EnumTypeDefinition class object.
I took a look at the documentation and saw that there isn't a property or method that returns all the values, you can return default value etc. but not all of them. https://nl.mathworks.com/help/simulink/slref/simulink.data.dictionary.enumtypedefinition-class.html
Also there isn't a method to return the number of elements in the enumeration type, this makes me unable to iterate over and return values one by one since I don't know the boundry of the iteration index.
I'd be glad If someone helped.
Thanks.
0 comentarios
Respuesta aceptada
riccardo
el 8 de Oct. de 2020
Editada: riccardo
el 8 de Oct. de 2020
I don't know if it's still an open Q, but since i found it while looking for the same thing, here's how I did it.
Once you have the Entry objects, get their Value with getValue, this/these will be EnumTypedefinition object(s).
Then one of the properties of an EnumTypeDefinition object is "Enumerals", hence:
enumDefList = <enumTypeDefObject>.Enumerals
will return a structure array holding Name, Value and Description of the enumerated type.
I'm using 2020a at the moment.
5 comentarios
Eric Bender
el 13 de Oct. de 2020
Editada: Eric Bender
el 13 de Oct. de 2020
@Riccardo
Thanks for the feedback. I was already familiar with the enumeration tryEnum01 command but I'm still unclear as to how to get the numerical representations of enum names from definition you've given above. Specifically I'd love to be able to get the full range of numerical values without having to cycle through each enum name (e.g. commandXYZ for tryEnum01 would yield : [0, 2 , 4, 6].
Thanks,
Eric
riccardo
el 14 de Oct. de 2020
@Eric
using enumeration you extract the arrays of enumerated objects and labels :
>> [ gg, hh ] = enumeration( 'tryEnum01' )
gg =
4×1 tryEnum01 enumeration array
AA
BB
CC
KK
hh =
4×1 cell array
{'AA'}
{'BB'}
{'CC'}
{'KK'}
<<
now gg is an array of enumerated objects including their numerical values
scalar-expanding the array within a "double" call:
>> indexes = double( gg(:) )
indexes =
0
2
4
6
<<
and you can make use of "methods" and "properties" on members of gg: only the list of methods is populated and useful
Más respuestas (1)
Amjad Elshenawy
el 23 de Mayo de 2019
Hello Ozan
Although it is not a direct answer to your question, I see that the following post may be helpful
1 comentario
Eric Bender
el 10 de Jul. de 2020
I have the same question as Ozan. I have Simulink enumerations loaded in my workspace using the command:
Simulink.defineIntEnumType('epb_parkbrakeswitch_SL_T',{'PB_SWITCH_NEUTRAL','PB_SWITCH_UP','PB_SWITCH_DOWN'},[2,4,6]);
I have other scripts that run which are able to get the names of the loaded enumeration classes and even the enumeration members for the class. However how can I programatically access the values [2,4,6]? I need this for other purposes and I can't seem to figure out how to have those returned to me upon inspection.
Thank you.
Ver también
Categorías
Más información sobre String en Help Center y File Exchange.
Community Treasure Hunt
Find the treasures in MATLAB Central and discover how the community can help you!
Start Hunting!