Ok截至目前最新版的matlab是2015b,怎么安装上就不说了。这里介绍的是在matlab2015b下的使用。为什么选择2015b,肯定越新的版本支持的越多,要知道matlab并不是能把其自带的所有内部函数都转化为c代码的,也不是所有的matlab数据类型都可以转化的,比如2015b之前的版本,如果你的matlab代码中存在cell结构的数据时你是转换不成c代码的,不支持,2015b也才刚刚支持,所以如果碰到cell结构的数据,在以前的版本你还得去转换成其他格式,cell数据类型的数还挺麻烦,不好弄。新本还有一些其他新加功能,详细可参考官网和用户指导手册。

下面介绍简单实例,求取两个4*4矩阵相加后,在求取最大值与最小值。这里先用一个函数实现,再分成两个函数实现,因为有的时候函数可能会涉及到函数调用。
单个函数示例如下:

function [a,b] = min_max(m,n)
temp = m+n;
a = max(max(temp));
b = min(min(temp));

对了,Matlab代码生成只能生成函数,对于脚本是无法生成C代码的(像上面这个带function的叫函数,没有function的m文件是脚本)。好了可以打开matlab coder了。


选择刚刚的那个函数,下一步

由于这里只有一个函数,也不用调用其他的函数(当然matlab内部自带的函数不用管了,想min与max),所以也不用添加其他函数。下一步

这一步是指定输入数据类型的,比如说你的两个相加矩阵是多大的呀,是int还是double等等。这里有两种方式,一种是根据函数的使用实例自动确定输入类型,一种是自己手工确定输入矩阵大小等等。那么一般的话,如果你知道你的矩阵大小,或者简单的函数,用第二种完全可以,但是有些时候,比如说我们的输入是一个大结构体,结构体里面超复杂,你怎么去一个个确定里面的什么输入(这种情况常见于我们使用别人的工具箱的函数的时候)。这个时候第一种第一种很好了,那么第一种方式什么意思呢?就是让你自己建立一个脚本(不是函数),然后脚本你们包含了你的这个函数的用法。这里假设我的两个矩阵为4*4的矩阵,好了再建立一个实例化的test脚本如下:

M1 = rand(4,4);
M2 = rand(4,4);
[a,b] = min_max(M1,M2);

然后按照方式一选择这个test.m

脚本:
点击自动确定输入类型,点完后就会出现自动确认的输入类型了。下一步

这是检验一下测试的脚本行不行,如果你上述不是自动确认输入方式的话可能没有这一步,然后下一步

到这里才是真正产生c与c++代码的时候了,当然还有些默认参数可以修改,正常你就不要改了。直接选个c或者c++,产生吧。完了以后会看到。

有一堆,但是也有几个主要的(用到c++中不知道选哪个就都选上吧),这么个简单的matlab函数转换成c++有160多行,算了,反正也不是自己写,管他多少行。在下一步打包就完成了。

Ok转换完的c++怎么在vs(我的是vs2013)上使用呢?

打开vs,新建c++工程,等等等等,最后把这个生成的一大堆复制粘贴放到vs所在的那个文件夹下的那个工程中去,在vs中的源文件下添加现有项目,把刚才复制的cpp都添加进去,h文件添加到头文件(注意要在C/C++→\rightarrow→常规下面添加附加包含目录),也可以把matlab生成的example文件夹里的main的cpp与h添加进去,最后添加完的如下:

这个时候直接运行main是可以运行的,不过结果什么也没有,因为main函数里面随机生成4*4的矩阵是这样的,

全是0,且在c++这里,你也没有让它显示cout出来
Ok,把这个main函数改一下,生成随机数也改一下,生成1-10随机数



显示出来,注意加点头文件。现在再去运行结果如下:

前面是两个矩阵(拍成一列了),对应相加再去求最大最小,发现是对的吧。Ok结束。

下面把这个矩阵求和然后在求最大最小分成两个m函数,如下:
addadd.m

function mn = addadd(m,n)
mn = m+n;

min_max(m,n)

function [a,b] = min_max(m,n)
temp = addadd(m,n);
a = max(max(temp));
b = min(min(temp));

这样再去生成c++代码:

在添加函数这一块,可以把用到的都添加进去,也可以只添加最终的那个,像这里就是min_max是最终的,它会调用addadd,所以addadd加不加都可以,matlab在下一步会自动添加的 ,注意,这一步如果没有将addadd.m添加进去,可能会没有addadd(m,n,temp)这个函数,matlab会将其转换为相应的代码,同时注意添加*.m的顺序,最好是按照函数调用的先后顺序,后调用的放置在前面,先调用的放置在后面** 。接下来类似,那么来看看识别出来的输入对象:

生成的代码如下,可以看到这个时候不再是一个min_max.cpp,还多了个addadd.cpp,并且在min_max函数中调用了如下:

如前面所述,后面的过程类似。。。

转载自:
博主:我i智能
博文地址:https://blog.csdn.net/on2way/article/details/49204511#commentBox
来源:CSDN

Matlab--m代码转C与C++代码)1(简单示例涉及到函数调用)相关推荐

  1. 静态网页制作代码php,php生成静态页面的简单示例

    发布新闻,实现新闻页面静态化,真静态 add.php 新闻标题: 新闻内容: config.php define("HOST", "localhost"); d ...

  2. matlab 指数拟合原理,matlab指数增长和阻滞增长拟合代码.doc

    matlab指数增长和阻滞增长拟合代码 代码: t=1:13; x=[3.04,6.63,11.13,28.43,49.22,87.85,134.11,200.00,208.69,303.03,410 ...

  3. 阻滞增长函数matlab拟合,matlab指数增长和阻滞增长拟合代码讲课稿

    <matlab指数增长和阻滞增长拟合代码讲课稿>由会员分享,可在线阅读,更多相关<matlab指数增长和阻滞增长拟合代码讲课稿(7页珍藏版)>请在人人文库网上搜索. 1.资讯类 ...

  4. 光伏并网逆变器设计方案,附有相关的matlab电路仿真文件,以及DSP的程序代码

    光伏并网逆变器设计方案,附有相关的matlab电路仿真文件,以及DSP的程序代码,方案.仿真文件.代码三者结合使用效果好,事半功倍 ID:6910671781885764

  5. 《数字图像处理原理与实践(MATLAB版)》一书之代码Part3

    本文系<数字图像处理原理与实践(MATLAB版)>一书之代码系列的Part3,辑录该书第135至第184页之代码,供有需要读者下载研究使用.代码执行结果请参见原书配图. --------- ...

  6. 自学Matlab必备的60个小程序代码

    自学Matlab必备的60个小程序代码 转载自:http://ishare.iask.sina.com.cn/f/9253907.html

  7. 对角阵在matlab,MATLABSimulink实现对角阵解耦(模型和代码).pdf

    MATLABSimulink实现对角阵解耦(模型和代码) MATLAB/Simulink 实现对角阵解耦 (模型和代码) 1.耦合与解耦: 在控制系统中,不同被控量之间往往存在相互影响,比如某封闭罐体 ...

  8. sbm预测matlab,**matlab计算非期望产出sbm模型代码**

    matlab计算非期望产出sbm模型代码 data1=xlsread('E:\论文材料\毕业论文\02.xlsx',1) data2=xlsread('E:\论文材料\毕业论文\02.xlsx',2) ...

  9. 频域平滑滤波 matlab,用MATLAB实现频域平滑滤波以及图像去噪代码

    用MATLAB实现频域平滑滤波以及图像去噪代码 提问时间:2018-01-18 19:06:50 是数字图象处理的实验,麻烦高人给个写好的代码,希望能在重要语句后面附上一定的说明,只要能在MATLAB ...

最新文章

  1. ExecutorService shutdown()和shutdownNow()方法区别
  2. c语言 增加 删除 修改的功能 不用链表,不用链表,单是结构体写入文件后,是否可以进行修改删除...
  3. python介绍和用途-Python --- Python的简介
  4. hdu5389(DP)
  5. Python基础概念_10_异常处理
  6. 空间自相关的知识总结
  7. SpringBoot集成Shiro进行权限控制和管理
  8. 在线生成艺术字_生成艺术:如何修改绘画
  9. C++ 中结构体的继承关系
  10. C加密 java_c语言的des加密,怎么用java解密
  11. WIN32汇编 状态栏的使用
  12. Win10要是个人,也算是鬼门关走过一遭了 1
  13. 大数据分析难不难好学吗?
  14. Windows定期删除过期文件
  15. Spring Boot项目出现问题: Whitelabel Error Page
  16. react中input输入框显示字数
  17. Python日记——柿子要捡软的捏,记第一只小爬虫
  18. 【flex chat】 p2p视频语音聊天室 欢迎你的测试
  19. 计算机英语大专期末考试,电子科技大学《大学英语2(专科)》20春期末考试【标准答案】...
  20. 我的择偶标准(丫咧,看清楚了啊)

热门文章

  1. Oracle数据库的备份与恢复技术
  2. 消息队列面试 - 如何解决消息队列的延时以及过期失效问题?
  3. OSPF——优化技术(含配置)
  4. ASP.NET CORE 使用Consul实现服务治理与健康检查(2)——源码篇
  5. Docker实战部署JavaWeb项目-基于SpringBoot
  6. 添加谷歌翻译到你的网站
  7. C#LeetCode刷题之#744-寻找比目标字母大的最小字母(Find Smallest Letter Greater Than Target)
  8. 面向对象设计原则之5-接口隔离原则
  9. golang import中的.和_的使用,import的几种方式点,下划线,别名
  10. razor页面跳转_如何在Blazor中使用Razor页面创建单页应用程序