Chinaunix首页 | 论坛 | 博客
  • 博客访问: 661917
  • 博文数量: 175
  • 博客积分: 2457
  • 博客等级: 大尉
  • 技术积分: 1488
  • 用 户 组: 普通用户
  • 注册时间: 2011-07-13 20:31
文章分类

全部博文(175)

文章存档

2012年(22)

2011年(153)

分类: C/C++

2011-08-16 20:37:52

从MATLAB代码生成C/C++代码

      MATLAB  Coder™ 可以从MATLAB®代码生成独立的、可读性强、可移植的C /C++代码。MATLAB Coder 支持程序控制结构,函数和矩阵操作。它可以生成MEX函数,该函数可以加速MATLAB代码的运行速度并且验证生成代码的属性。MATLAB Coder™结合 Simulink Coder™和 Embedded Coder™可以将含有MATLAB代码的Simulink®模型生成C代码,生成的C代码可以用来:

  • 单独执行
  • 与其他软件集成
  • 加速仿真MATLAB算法
  • 实现嵌入式系统

特点:

  • 生成符合ANSI/ISO标准的C / C++ 代码;
  • 可以对定点和浮点数学运算生成MEX函数;
  • 可以利用工程管理工具来确定输入点和输入数据属性以及代码生成的配置选项;
  • 可为变大小的数据提供静态或动态内存存储位置;
  • 代码生成支持Communications System Toolbox™, DSP System Toolbox™, 和Computer Vision System Toolbox™许多函数和系统对象;
  • 支持一般的MATLAB语言行为,包括矩阵操作,下标操作,程序控制语句(if,switch,for,while)以及结构体。


MATLAB Coder  工程管理界面(左)和代码生成报告(右),该报告显示了生成的C代码.

强大的功能

 ■   可生成代码的MATLAB 语言子集

      MATLAB Coder可以针对某些MATLAB 语言生成代码,这些语言一般都是设计工程师在开发大型系统的算法时经常用到的。这些支持的子集包括超过400个操作符和MATLAB中的函数。

      MATLAB Coder支持对Aerospace Toolbox,Image Processing Toolbox™和Signal Processing Toolbox™中的部分函数生成代码,而且支持对Communications System Toolbox™,Computer Vision System Toolbox™和DSP System Toolbox™中的系统对象生成代码。

      MATLAB Coder支持开发算法时用到的大部分MATLAB语言,包括:

  • 矩阵和数组:比如持续变量,全局变量,矩阵操作,N维数组,下标操作和帧
  • 类和数据类型:比如复数, 整形数据匹配,单精度双精度,定点运算,字符,结构体,数值类和变长度数据
  • 编程结构:比如MATLAB程序控制结构(if, for, while, switch)和数学运算,逻辑关系操作符
  • 函数:比如函数句柄,子函数和部分MATLAB函数,变长度输入和输出声明列表和子函数的调用
 ■   MATLAB Coder的应用

      MATLAB Coder的应用通过使用MATLAB Coder,设计工程师可以在MATLAB中开发算法,然后生成可读性强和可移植的C/C++代码,利用该代码可以:

  • 将MATLAB算法生成在PC机上可以运行的可执行文件;
  • 可以通过用自动生成的MATLAB可执行文件(MEX函数)替换MATLAB代码来加快仿真速度,MEX函数就是调用编译好的C/C++代码;
  • 可以将MATLAB算法作为一个编译好的库集成到其他的软件中;
  • 可以在嵌入式处理器中执行和验证MATLAB算法。


MATLAB Coder应用情况

 ■   从MATLAB中生成代码

      将MATLAB语言转换成C代码在执行过程中需要确定一定的要求,MATLAB Coder可以在MATLAB语言环境中指导你完成这个过程。由于MEX函数需要调用编译好的C代码,所以可以通过生成MEX函数,然后在MATLAB中运行该函数来确保你的算法符合代码生成规则。MATLAB    Coder 生成一个报告,这个报告中会指出在从MATLAB算法到生成代码过程中必须改正的错误。通过不断的修正错误、生成MEX函数这种迭代过程直到MATLAB算法满足代码生成的要求,这时就可以生成C/C++的源代码或者MEX函数了。

C 或者C++源代码可以用来:

  • 将MATLAB算法生成在PC机上可以运行的可执行文件;
  • 创建一个库;
  • 作为嵌入式代码运行。

MEX文件可以代替MATLAB代码被调用:

  • 可以在MATLAB中验证编译后的代码
  • 加速执行速度


通过使用MATLAB Coder从MATLAB生成代码的三步迭代流程

 ■   MATLAB Coder 、Simulink Coder和Embedded Coder

      用于仿真的MATLAB  Function模块和代码生成可以让你将MATLAB算法生成算法集成到Simulink模型中。Simulink Coder可以将这些Simulink包含MATLAB代码的模型生成代码。


Simulink中的雷达跟踪模型,这个模型使用MATLAB Function模块
在这个模块中有用MATLAB编写的卡尔曼滤波算法

      Embedded Coder可以针对支持的嵌入式处理器、面向目标的快速控制原型板,及微处理器的需要和微处理器生成代码,它提供了配置选项和可以更好的控制生成代码的函数、文件和数据的高级优化选项,因此它扩展了MATLAB Coder和Simulink Coder。Embedded Coder 提高了代码效率,并且能很方便的集成已有代码,数据类型和产品中的标定参数。

      使用Embedded Coder生成的代码,可以导出到第三方的开发环境中,可以在嵌入式系统中自动创建可执行文件。生成的代码可以在处理器上执行用来验证性能,可以通过PIL仿真和代码剖析的方法来查看代码在硬件上的运行情况。

阅读(2611) | 评论(0) | 转发(0) |
给主人留下些什么吧!~~