Matlab Coder优缺点、使用介绍、使用注意

转自 https://jingyan.baidu.com/article/37bce2be107ec21002f3a298.html

  • 1

    优点

    1.  借助 Matlab Coder,软件工程师不需要将设计的算法进行 C 编程,而是利用 Matlab 中强大的函数库,建立 Matlab 函数,通过设置目标语言需要的参数,生成能脱离 Matlab 环境独立运行的 C 代码,这样大大减轻了软件工程师的编码工作量。

    2.      可以对定点和浮点数学运算生成MEX函数;

    3.      可以利用工程管理工具来确定输入点和输入数据属性以及代码生成的配置选项;

    4.      可为变大小的数据提供静态或动态内存存储位置;

    5.      代码生成支持Communications SystemToolbox, DSP System Toolbox, 和Computer Vision System Toolbox许多函数和系统对象,对于进行代码移植提供很大的帮助;

    6.      支持一般的MATLAB语言行为,包括矩阵操作,下标操作,程序控制语句(if,switch,for,while)以及结构体。

    7.      通过生成MEX文件,使得大型项目的运行时间大大缩短,提高运行速度。

  • 2

    缺点和局限:

    1.       只能添加函数,对于独立的文件不能生成。

    2.       matlab是专为数组或者说矩阵运算而设计的,所以先弄清楚matlab 的工作环境与 VC环境是很不一样的。并不支持所有函数,如clc 、load等,并不支持全部数据类型,如矩阵中的稀疏矩阵。所以在转换之前需要进行格式修改和变量初始化等工作。具体关于Matlab Coder支持的函数和数据类型在MathWork官网有介绍(http://www.mathworks.cn/products/matlab-coder/)。

    3.       所生成的C/C++源码可读性不好。例如对比GSMsim中channel_enc 子函数。用Matlab Coder生成的文件总个数为19,代码总数500行左右,精简后文件个数为10个,总行数300行左右,自己写的channel_enc函数有7个文件,代码行数150左右。同时MATLAB在转换时会对C/C++中double等数据类重新进行声明定义,double类型会被定义为real_T。同时会用到U等比较奇怪的变量。

    4.       在转化时要注意考虑使用的函数,来提高代码可读性,缩短代码长度。

    例如:

    a= rand(5,1);

    find(a< .5);

    length(find(a< .5));

                         与

                                a= rand(5,1);

                                sum(a< .5);

    实现的功能和结果是一样的,但是find在转化中会用到动态分配内存等形式,换成sum函数能够大大缩短代码长度。

    END
  • 你可能感兴趣的:(matlab)