不是吧,MATLAB代码居然能直接转成C

诸君小朋友可在闲鱼寻找优化算法相易地,便可寻找到官方闲鱼账号,严防被骗上当。

前一段功夫在处事中碰到如此一个本质题目,项目主体部份是用C++写的,但个中有一小部份算法是用MATLAB写的。因而乎,我第一主意是何如用C++把MATLAB中的代码实行出来。

这时,一位长辈意味深长地和我说:“也许去网上找一下MATLABCoder。”

那时听完一脸懵逼,甚么是MATLABCoder?它有甚么用?

因而在网上查阅了一些材料以后,觉察MATLABCoder本质上是MATLAB自带的一个运用程序。这个运用程序的牛X之处在于它也许直接将MATLAB代码更改成C/C++代码。

就在我认为哄骗MATLABCoder也许轻便地更改时,然则在本质哄骗经过中照旧碰到一些雷区,这些雷区是在网上查不到。

为了避免小朋友持续“踩雷”,这日详细地诠释一下何如哄骗MATLABCoder将MATLAB代码更改成C/C++代码?何如避免一些“雷区”?

01

筹办处事在哄骗MATLABCoder前,咱们需求先对MATLAB代码停止一些责罚,重要囊括:

(1)简略MATLAB代码中总共的注解(这是第一个“雷区”,一定要把MATLAB代码中注解全数删纯洁,不然无奈胜利更改)。

(2)简略MATLAB代码中绘图和打印部份的代码,简而言之,即是把甚么plot、disp之类的代码全数简略去。假若不简略这些代码,则会致使无奈胜利更改,这是第二个“雷区”。

(3)假若在MATLAB代码中想要把一个未知行(列)数的数据贮存在矩阵中,向例的做法是先令这个贮存的矩阵A为空。

A=[];

假定要增加的多少行数据,屡屡增加的数据都为B。而后也许用以下的代码将要增加的数据增加进入。

A=[A;B];

这原来是最简单漠视的一个“雷区”,C/C++不容许你MATLAB存在这么牛X的办法,因而假若MATLAB代码中存在上述表率增加数据的代码,那末是无奈胜利更改的。

治理计划:先求出到底需求增加几许行数据?而后再增加数据。

假定经筹划需求增加m行数据,且增加数据的列数都为n,那末也许先初始化贮存的矩阵A,而后再经过计数器的方法轮回增加数据。

A=zeros(1,n);count=1;fori=1:mA(count,:)=B;count=count+1;end

02

封装主函数

由于主函数为足本函数,在更改以前需求先将足本函数更改为一个向例的函数,即有明了输入和输出的函数。

以遗传算法(GA)求解观光商题目(TSP)MATLAB代码诠释这篇推文的主函数为例,平昔主函数的代码以下:

%%

做家:随心%




转载请注明:http://www.aierlanlan.com/cyrz/878.html