前一段功夫在处事中碰到如此一个本质题目,项目主体部份是用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代码诠释这篇推文的主函数为例,平昔主函数的代码以下:
%%
做家:随心%