在网上看到过比较多介绍关于simulink模型代码生成的案例或相关资料,事实上,对于我们做信号处理相关或比较复杂的算法的时候,m脚本用起来更灵活,搭建实现起来更方便。但是使用MatlabCoder来生成工程C/C++代码时应该注意什么呢?
1.输入输出定义,在matlab中平时我们使用一个变量,直接用就可以,使用时即定义和初始化,但是如果模型是需要生成代码的,则在使用时应对参数进行定义及初始化;
2.向量或矩阵的尺寸大小,在模型中涉及到的向量或矩阵应明确其大小尺寸,对于未知大小的向量或矩阵最好在代码中用coder.varsize声明其最大空间;
3.对于结构体数组的使用,结构体数组一定要初始化定义,定义各个元素的数据类型,定义好结构体数组的维度,且需按照可生成代码的结构体形式来定义,注意赋值类型是否一致;
4.实际逻辑上可以通过,但是表面看起来某些路径没有定义某变量的情况 需要注意,MatlabCoder没有那么智能,这些是会报错的;
5.非标量结构体数组访问不支持代码生成;
6.调用内部小函数有可能导致数据类型不一致,从而导致生成代码时报错;
7.matlab中的.* ,MatlabCoder是不识别的,如有使用最好提前自己编写相应的实现函数;
暂时想到了这些,如有其他再补充,生成代码后可用MatlabCoder中的SIL来测试验证一下,会输出对应结果差值,也可以画图出来非常直观。最近Matlab被管制,用了这好些几年的工具可能也要换了吧。