基于模型开发过程之变量篇——枚举量…
来源:互联网 发布:js 调用java代码 编辑:程序博客网 时间:2024/06/07 18:42
基于模型开发过程之变量篇——枚举量的用法
一、枚举类型
1、C语言中的定义
先来回顾一下,在C语言中枚举类型定义的一般形式为:
enum
在枚举值表中应罗列出所有可用值。这些值也称为枚举元素。
在C语言中使用的枚举量的例子如下:
enum weekday{ sun,mon,tue,wed,thu,fri,sat};
enum weekday a,b,c;
a=sun;
b=mon;
c=tue;
2、Matlab中的定义
Matlab中定义的枚举变量被归为类,如果不加载其他类属性或父类,则其没有对应可转换的数字,但可使用char(…)函数,对其进行转换显示出对应表达的字符,也可进行相等或不等判断。
Matlab中枚举类型的定义都是使用M文件定义的。
定义方式如下:
classdef
end
例如,定义一个枚举变量类型weekdays,如下定义:
classdef weekdays
end
保存为m文件,文件名需要和类名称相同,可以在工作空间浏览器中看到
定义一个枚举变量时,直接使用.对其进行赋值即可,例如在命令窗口输入:
a=weekdays.Thursday
则,得到一个weekdays类型的枚举变量,值为Thursday,使用char(a)则得到文本值
’Thursday’
3、Simulink中的定义
Simulink中定义的枚举变量也是类,但是需要为所定义的枚举类型定义一个专有父类Simulink.IntEnumType,同时必须要给每个枚举元素进行值的指定,而不像C语言中是可以仅指定其中部分值。
具体的定义方式如下,定义一个m文件
classdef
enumeration
end
end
例如:
classdef weekdays
enumeration
Monday(0),Tuesday(2),Wednesday(3),Thursday(4),Friday(5)
end
end
备注:如果是较早版本的simulink或matlab应该如下定义,即在类名称前添加类型定义。
classdef (Enumeration)weekdays
enumeration
Monday(0),Tuesday(2),Wednesday(3),Thursday(4),Friday(5)
end
end
三、在Simulink和Stateflow中设置枚举常量和枚举变量的方法
1、在matlab工作路径的文件夹下定义出m文件
2、所需定义的模块或者信号中选择Datatype,可以使用Model Explorer中定义
3、也可以在信号属性中定义
4、在simulink中对常量模块赋值时,需要采用类似如下结构体的方式:
5、在stateflow中使用信号时,运用规则和C语言一样,可以直接使用枚举元素对枚举变量赋值,而不需要使用类似结构体的方式,定义方式在Explorer的stateflow中定义,注意:在模型层中的定义是无效的。
四、在使用枚举的一些好处
1、直接的好处是极大提高了程序的或模型的可读性。
2、使用枚举变量定义数据时比用define更为严谨,避免对枚举元素进行修改。
3、变量或常量的取值必须固定在枚举元素的范围内,避免随意定义引起不容易发现的错误。
- 基于模型开发过程之变量篇——枚举量…
- 基于模型开发之代码集成——LegacyCodeTool
- 软件开发之道——软件过程模型
- 基于模型开发之代码集成(二)——Le…
- 基于模型开发之代码集成(三)——Le…
- 基于模型开发之代码集成(四)——Le…
- 基于模型开发之代码集成(五)——Le…
- MySQL之——基于mysqldump全量备份还原
- usb开发工作日志之二——usb设备枚举过程
- 存储过程之二—变量
- USB驱动开发之mass storage的枚举识别过程
- USB驱动开发之mass storage的枚举识别过程
- USB驱动开发之mass storage的枚举识别过程
- USB驱动开发之mass storage的枚举识别过程
- usb驱动开发之USB协议枚举过程详解
- 4.5 基于OHCI的USB主机 ——USB设备枚举过程
- USB驱动开发——基于windows的WDM模型
- 基于模型的软件开发——互动出版网
- 基于模型开发之代码集成(四)——Le…
- 基于模型开发之代码集成(五)——Le…
- [转]SIMULINK与模型覆盖测试
- 抢购应用设计思路
- freescale中的RELOCATE_TO宏…
- 基于模型开发过程之变量篇——枚举量…
- 人生没有过不去的坎
- windows下react-native环境配置
- reactNative中的通知
- 2017年个人目标及计划
- 【APIO2010T1】特别行动队-DP斜率优化
- 阿里用技术帮用户剁手——《尽在双11——阿里巴巴技术演进与超越》
- SDUT 3258 Square Number【思维+高效预处理】
- 短信验证-互亿短信