matlab工具将matlab脚本转C语言实现

Matlab 提供了将matlab语句转换成C或者C++语句的工具Matlab coder,但是部分matlab实现的函数是不能转换的,能够转换的函数列表在这个链接中可以找到:https://www.mathworks.com/help/coder/ug/functions-supported-for-code-generation-alphabetical-list.html。
下面就以matlab 2017b为例,说明一下转换过程:
首先在matlab 2017b找到matlab coder工具,点击APPS标签,如下图:
matlab工具将matlab脚本转C语言实现_第1张图片
选择需要转换的matlab函数,选择add,点击Next,如下图:
matlab工具将matlab脚本转C语言实现_第2张图片

点击下图框中可以增加函数,点击Next:
matlab工具将matlab脚本转C语言实现_第3张图片
点击设置参数类型:
matlab工具将matlab脚本转C语言实现_第4张图片
设置两个参数的参数类型:
matlab工具将matlab脚本转C语言实现_第5张图片
还可以添加全局变量;
matlab工具将matlab脚本转C语言实现_第6张图片因为是标量,所以1x1,如果是矢量,可以选择mxn,输入m,n,也可以选择不定个数。
直接next,再next,更高级设置点more setting,Tool chain可以下拉选择平台,我使用的是Vs,选择“auto locate”当前开发工具,默认点击Generate,开始生成代码,
matlab工具将matlab脚本转C语言实现_第7张图片
如果途中没有错误,出现下面的类似画面,表示生成成功,
matlab工具将matlab脚本转C语言实现_第8张图片
成功生成之后,在add.m同目录下产生一个codegen目录中,lib目录下有所有生成C文件,按照matlab函数名命名目录,在add目录下,有个add.c文件,截取部分源码如下:

#include "add.h"

/* Function Definitions */

/*
 * Arguments    : double a
 *                double b
 * Return Type  : double
 */
double add(double a, double b)
{
  return a + b;
}

/*
 * File trailer for add.c
 *
 * [EOF]
 */

感觉生成的代码包括一个库工程还有测试代码,但是我没有试过,我新建一个控制台工程来测试代码,不需要修改任何代码,编译顺利通过。

需要注意的是,生成代码并不是像这个简单例子那么顺利,例如如果函数中warning功能,就不能转换成C,但是有error却可以,varargin也不支持,另外,参数的类型设置需要设置正确,否则生成代码时会出现错误,特别是数组与元胞数组时。

你可能感兴趣的:(C++)