枚举表示一组固定的命名值。枚举有助于您的MATLAB®代码和生成的C/ c++代码更具可读性。例如,生成的代码可以用if (x ==红色)
而不是使用比较字符串
.要生成C/ c++代码,您必须具备金宝app®编码器™.
控件中使用枚举时MATLAB函数
Block,坚持以下限制:
不支持对枚举类的方法的调用。金宝app
不支持将字符串或字符向量传递给枚举的构造函数。金宝app
对于一个MATLAB函数块,您可以使用金宝appSimulink.defineIntEnumType
也可以定义枚举类。枚举类必须派生自以下基类型之一:金宝app仿真软件。IntEnumType
,int8
,uint8
,int16
,uint16
,或int32
.看到定义MATLAB函数块枚举.
只能对枚举使用有限的一组操作。看到枚举的允许操作.
将枚举与支持枚举类型的函数一起用于代码生成。金宝app看到支持枚举的MATLAB工具箱函数金宝app.
的枚举MATLAB函数block有两种方式:
要导入外部定义的枚举,请使用金宝appSimulink.defineIntEnumType
函数。看到导入MATLAB外部定义的枚举.
在类定义文件中,定义枚举类型。例如:
classdef PrimaryColors <金宝app仿真软件。IntEnumType
枚举红(1),蓝(2),黄(4)端端
如果在类定义文件中定义枚举类型,则类必须从以下基类型之一派生:金宝app仿真软件。IntEnumType
,int8
,uint8
,int16
,uint16
,或int32
.然后,您可以在之间交换枚举数据MATLAB函数模块和模型中的其他Simulink金宝app模块。
如果你使用金宝app仿真软件编码器要生成C/ c++代码,可以使用枚举类基类型来控制生成的C/ c++代码中枚举类型的大小。您可以:
将枚举类型表示为可移植到不同目标的固定大小整数。
减少内存使用量。
与遗留代码的接口。
符合公司的标准。
基类型决定了生成的C/ c++代码中枚举类型的表示形式。
如果基类型是金宝app仿真软件。IntEnumType
时,代码生成器生成一个C枚举类型。考虑以下MATLAB枚举类型定义:
classdefLEDcolor <仿金宝app真软件。IntEnumType枚举绿(1),红(2)结束结束
这个枚举类型定义产生了以下C代码:
typedef enum {GREEN = 1, RED} LEDcolor;
类型定义
语句#定义
枚举值的语句。考虑以下MATLAB枚举类型定义:classdefLEDcolor < int16枚举绿(1),红(2)结束结束
typedef int16_T LEDcolor;#define GREEN ((LEDcolor)1) #define RED ((LEDcolor)2)
若要自定义为枚举类型生成的代码,请参见自定义模型枚举金宝app.
对于代码生成,您只能对该表中列出的枚举进行操作。
操作 | 例子 | 笔记 |
---|---|---|
赋值运算符: |
发送朴通= LEDcolor。绿色xoff = led颜色。红色的 |
- - - - - - |
关系运算符: |
发送朴通= =发送葡开 |
代码生成不支持使用金宝app |
铸造操作 |
双(LEDcolor.RED) |
- - - - - - |
转换为字符数组或字符串 |
y = char (LEDcolor.RED);日元=投(LEDcolor.RED,“字符”);y2 =字符串(LEDcolor.RED); |
|
索引操作 |
m = [1] n = [1] n = [2] n = [2] |
- - - - - - |
控制流语句:if, switch, while |
if state == sysMode。ON led = led color. green;else led = LEDcolor.RED;结束 |
- - - - - - |
对于代码生成,你可以使用MATLAB工具箱函数中的枚举: