将Matlab多个m文件转换为Java或C代码的方法

一、背景

MATLAB的强大之处我就不多说了,语法简答,顾虑少,我们很多算法可以用MATLA来编写与验证。C++的威力我也不多说了,计算效率很高。

但是!!MATLAB计算效率低下,无法用于实际应用中,比如嵌入式系统。C++语法严格,顾虑极多,因此让许多工程人员头疼。美国MathWorks公司貌似意识到了这个问题,自MATLAB2011开始,有了一款附于MATLAB的强大神器——Coder,它的作用:可以将你的复杂的MATLAB代码近乎自动地转换成C\C++代码,完美程度达99%。至于为什么不是100%,下面的演示会体现这一点。

二、详细步骤
(1)在MATLAB R2015b中,创建一个名为“test.m”的函数文件,代码如下

function [A,B] = test( mark,num,array )%输入参数中,mark、num是标量,array是向量 
a=ones(1,5);
b=zeros(1,5);
    if mark==0        
        for i=1:num
             if i==1
                 A=a;
                 B=b;
             else
                 A=[A,a];
                 B=[B,b];   
             end
        end 
    else        
        for i=1:num
             if i==1
                 A=a;
                 B=b;
             else
                 A=[A,array];
                 B=[B,array];   
             end
        end
    end   
end

代码实现的功能很清晰,不详述。现在,我们来用MATLAB R2015b自带工具Coder3.0来将上面的代码转化成C++代码。

(2)新建一个脚本文件main.m,用来试运行上述代码【这一步一定要做,不能轻视】
main.m

[A,B]=test( 3,4,[1 2 5 6 8] )

然后运行脚本文件main.m,在命令行窗口得到如下结果

A =
1 至 18 列
1 1 1 1 1 1 2 5 6 8 1 2 5 6 8 1 2 5
19 至 20 列
6 8
B =
1 至 18 列
0 0 0 0 0 1 2 5 6 8 1 2 5 6 8 1 2 5
19 至 20 列
6 8

结果没有问题。接下来开始真正的转换工作。

(3)在命令行窗口输入

mex -setup %"-"前有空格,请注意!

耐心等待,【出现】:


MEX 配置为使用 'Microsoft Visual C++ 2008 Professional (C)' 以进行 C 语言编译。
警告: MATLAB C 和 Fortran API 已更改,现可支持
包含 2^32-1 个以上元素的 MATLAB 变量。不久以后,
您需要更新代码以利用
新的 API。您可以在以下网址找到相关详细信息:
http://www.mathworks.com/help/matlab/matlab_external/upgrading-mex-files-to-use-64-bit-api.html。

要选择不同的 C 编译器,请从以下选项中选择一种命令:
lcc-win32 mex -setup:'D:\Program Files\MATLAB\R2015b\bin\win32\mexopts\lcc-win32.xml' C
Microsoft Visual C++ 2008 Professional (C) mex -setup:C:\Users\WangXu\AppData\Roaming\MathWorks\MATLAB\R2015b\mex_C_win32.xml C

要选择不同的语言,请从以下选项中选择一种命令:
mex -setup C++ 
mex -setup FORTRAN
【单击】“mex -setup C++ ”

【出现】:

MEX 配置为使用 'Microsoft Visual C++ 2008 Professional' 以进行 C++ 语言编译。
警告: MATLAB C 和 Fortran API 已更改,现可支持
包含 2^32-1 个以上元素的 MATLAB 变量。不久以后,
您需要更新代码以利用
新的 API。您可以在以下网址找到相关详细信息:
http://www.mathworks.com/help/matlab/matlab_external/upgrading-mex-files-to-use-64-bit-api.html。

(4)

在命令行窗口输入

coder

耐心等待,【出现】如下的MATLAB Coder欢迎界面。

matlab多个m文件转Java matlab中m文件转化c代码_matlab多个m文件转Java


然后点击上图中蓝色圆圈处,选择我们建立的test.m文件,得到如下图

matlab多个m文件转Java matlab中m文件转化c代码_MATLAB_02


再点击上图蓝色圈的“Next”,得到下图

matlab多个m文件转Java matlab中m文件转化c代码_API_03


然后点击上图中蓝色圆圈处,选择我们建立的main.m文件,得到如下图

matlab多个m文件转Java matlab中m文件转化c代码_API_04


然后点击上图中蓝色圆圈处,得到如下图

matlab多个m文件转Java matlab中m文件转化c代码_matlab多个m文件转Java_05


上图的红色框区就是用来设置输入参数mark、num以及array的属性的。例如array可以设置为固定长度、有限可变长度以及无限可变长度。如下图

matlab多个m文件转Java matlab中m文件转化c代码_matlab多个m文件转Java_06

matlab多个m文件转Java matlab中m文件转化c代码_命令行_07

matlab多个m文件转Java matlab中m文件转化c代码_命令行_08

免责声明:本文系网络转载或改编,未找到原创作者,版权归原作者所有。如涉及版权,请联系删

QR Code
微信扫一扫,欢迎咨询~

联系我们
武汉格发信息技术有限公司
湖北省武汉市经开区科技园西路6号103孵化器
电话:155-2731-8020 座机:027-59821821
邮件:tanzw@gofarlic.com
Copyright © 2023 Gofarsoft Co.,Ltd. 保留所有权利
遇到许可问题?该如何解决!?
评估许可证实际采购量? 
不清楚软件许可证使用数据? 
收到软件厂商律师函!?  
想要少购买点许可证,节省费用? 
收到软件厂商侵权通告!?  
有正版license,但许可证不够用,需要新购? 
联系方式 155-2731-8020
预留信息,一起解决您的问题
* 姓名:
* 手机:

* 公司名称:

姓名不为空

手机不正确

公司不为空