![d1a8453fb2c5295f139d93f5e4203cf9.png](https://i-blog.csdnimg.cn/blog_migrate/7b053fb0e2bc22494a51d795bbdb3fa7.jpeg)
好久不见,别来无恙。
最近被生活毒打得很惨,俩字,没钱,一个字穷。
好了,进入正题。
之前的一篇文字,草草地介绍了枚举量在Simulink仿真中观测,以及基于模型开发生成代码A2L软件。确实使用枚举量能够让开发尤其是测试更清晰明了。
离骚1949:如何在simulink中使用枚举量使工作更容易zhuanlan.zhihu.com![f0f9878edbd8eb6440b9f6cfc9e00c50.png](https://i-blog.csdnimg.cn/blog_migrate/df37b6c5c9635bbbda072b124c301173.jpeg)
但是,相比uint8 或者 int8,针对每个枚举量,单独做个Classdef的M脚本还是有点太过于麻烦了,严重拖慢了项目速度,也浪费了工程师大量的敲代码时间。
Matlab 提供了两个函数,帮助我们使用脚本编写M文件, fprintf 和fopen。
![3ed97706ba8e19669286c85d9baaff57.png](https://i-blog.csdnimg.cn/blog_migrate/c9c5f99d69dadb0cfc44ca52e4945e56.png)
![354e8d503cd7ce8a3e983442acc547fb.png](https://i-blog.csdnimg.cn/blog_migrate/363f37a40c29e38bfa83654e93089890.png)
matlab help 给出的实例函数用法如上图所示。
依据这俩函数加上xlsread ,就可以不费太多时间完成自动生成classdef的脚本文件,既而一劳永逸。
![d8507cac20590c2f8dda879df2ff79ae.png](https://i-blog.csdnimg.cn/blog_migrate/7dc965993a55c7f4cff6a8ce675aa7e8.png)
①不同的Enumeration之间,使用空格隔开。
②枚举量全部定义完毕,使用end结尾。
![92418646423085d0220bf477531caa2d.png](https://i-blog.csdnimg.cn/blog_migrate/c2409f89a039b9fbad42b55141562456.png)
注意①②两处,是用来告诉脚本,在枚举完成之后,fprintf classdef 文件的结尾的‘‘end’’。如果你想到更好的方法,可以选择这两处取消。
ok,介绍完了描述枚举量的表格,开始上干货---脚本代码。
![b5dfc547d63624a9c4a14db1e06a6279.png](https://i-blog.csdnimg.cn/blog_migrate/0891ce1f2708cee7d84e1ea4a38a6742.jpeg)
脚本主要用到了 read excel,isnan用法,字符串处理以及前文提到的两个帮助我们实现classdef.m文件的两个函数 fprintf 和fopen。
运行脚本,read excel之后,效果如下。
![338481a47b297c0d9702fc6b549e05e5.png](https://i-blog.csdnimg.cn/blog_migrate/649b8240d27376ff6cb952343bc168df.png)
成功。欢迎讨论。任何问题,随时知乎联系我~