使用 MATLAB Coder 将 MATLAB 代码生成 C/C++ 代码

来源:互联网 发布:帮我下载淘宝网 编辑:程序博客网 时间:2024/05/22 00:35

MATLAB Coder 可以将 MATLAB 代码生成独立的、可读性强、可移植的 C/C++ 代码。

使用 MATLAB Coder 产生代码的3个步骤:

  1. 准备用于产生代码的 MATLAB 算法;
  2. 检查 MATLAB 代码的兼容性(有些 matlab 代码语句并不能生成 c/c++ 代码);
  3. 产生最终使用的源代码或 MEX。

例子:两数相乘

1、安装 matlab2011a 或者更新版本

2、简单生成一个 foo.m 文件

function c = foo(a, b) %#codegen%This function muliplies a and bc = a * b

其中,%#codegen 可以防止出现警告错误

3、在命令窗口输入 mex -setpu ,选中一个存在的编译器

4、在命令窗口输入 coder(图形界面),弹出 MATLAB Coder Project 对话框,输入一个工程名 foo.prj


6、在 Overview 选项卡中,点击 Add files,弹出对话框,选中 foo.m 打开


7、单击变量 a,选择 Define by Example,弹出 MATLAB Coder Define by Example 对话框,在 MATLAB Expression 中输入 5,点击 OK;同样变量 b 也进行相应操作,输入 6


8、选中 Build 选项卡,Output type 中选择 c/c++ Static Library


9、点击 More settings,General Language 选择 C++


10、点击 Build,进行编译;点击 View report,弹出 Code Generation Report 对话框,此时,变量 a、b、c 会显示相应的变量信息

11、利用 vs2012 建立一个控制台应用程序,将生成的相关文件foo.h、foo.c、rtwtypes.h、foo_types.h (请注意多个 m 文件的情况) 拷到相关目录


12、在 foo.c 文件中添加 #include "stdafx.h"


13、添加 test.cpp 文件


#include "stdafx.h"#include "foo.h"#include <iostream>using namespace std;int _tmain(int argc, _TCHAR* argv[]){    double a = 0.0, b = 0.0, c = 0.0;       cin>> a >> b;    c = foo(a, b);    //调用 foo 函数    cout<< "c = " << c <<endl;    return 0;}


注意:如果有多个 MATLAB 的 m 文件同时生成,除了需要将每个 m 文件所生成的 .c 和 .h 文件复制到 VS 工程的目录之外,还要在每个 .c 文件添加#include "stdafx.h"

转载自:http://blog.csdn.net/fengbingchun/article/details/6793826

0 0