MATLAB-C混合编程入门.docx

上传人:自*** 文档编号:126229353 上传时间:2020-03-23 格式:DOCX 页数:13 大小:444.17KB
返回 下载 相关 举报
MATLAB-C混合编程入门.docx_第1页
第1页 / 共13页
MATLAB-C混合编程入门.docx_第2页
第2页 / 共13页
MATLAB-C混合编程入门.docx_第3页
第3页 / 共13页
MATLAB-C混合编程入门.docx_第4页
第4页 / 共13页
MATLAB-C混合编程入门.docx_第5页
第5页 / 共13页
点击查看更多>>
资源描述

《MATLAB-C混合编程入门.docx》由会员分享,可在线阅读,更多相关《MATLAB-C混合编程入门.docx(13页珍藏版)》请在金锄头文库上搜索。

1、AVIP LabMATLAB/C+混合编程入门Zhang2013/1/7变更履历版本号更改时间状态更改简要描述更改人0.12013-01-07N新建,主要内容包括- 软件环境配置- 代码移植注意事项- mex编程入门- 断点调试技巧- 代码版本管理工具git使用入门注:状态可以为N-新建、A-增加、M-更改、D-删除目 录1软件安装11.1版本选择11.2MATLAB mex环境配置11.3MinGW的安装与配置12编译32.1注意事项32.2断点调试33MEX编程入门63.1理解MEX函数63.2MATLAB与C+数据结构的差别63.3数据格式转换代码实例84GIT使用入门104.1什么是G

2、it?104.2为何使用Git?104.3Git环境配置10APPENDIX I - GOOGLE 搜索技巧111 软件安装1.1 版本选择为进行MATLAB/C+混合编程,需要安装MATLAB和C+ 编译器。windows环境下通常选择Visual C+(以下简称VC)作为c+编译器,根据经验,VC编译器的版本号需要高于MATLAB的版本号。例如,MATLAB 2012a搭配VC 2010. 或者查阅MathWorks产品Release信息(这里给出了MATLAB 2012b支持的编译器列表)软件下载地址:i. DreamSpark计划:我校加入了dreamspark计划,点击这里,用校园邮

3、箱(jaccount)注册一个帐号,即可免费得到正版visual studio及其他Microsoft产品ii. 使用PT,搜索资源进行下载1.2 MATLAB mex环境配置i. 安装MATLAB及Visual C+ii. 输入”mex -setup”进行环境配置,MATLAB会找到已安装的C+编译器,选择VC选项,校验编译器安装路径与实际情况是否相符1.3 MinGW的安装与配置MinGW是指只用自由软件来生成纯粹的Win32可执行文件的编译环境,它是Minimalist GNU on Windows的略称,实际上MinGW是一套 GNU 工具集合。MinGW为那些不喜欢工作在 Linux

4、(FreeBSD) 操作系统而留在 Windows 的人提供一套符合 GNU 的 GNU 工作环境。使用MinGW就可以像在 Linux 下一样使用 GNU 程序开发工具。下载地址。i. 安装:双击安装包(exe文件),选择需要的组件ii. 配置环境变量:在“我的电脑-属性-高级-环境变量”中- include 增加 MinGW pathinclude- lib 增加 MinGW pathlib- PATH 增加MinGW pathbin;MinGW path msys1.0bin2 编译2.1 注意事项i. 如果project有项目主页 (project homepage), README/

5、document之类的文件,首先阅读该类文件,其中通常包括了运行该项目所需的环境配置、编译步骤、demo运行说明等内容ii. MATLAB和C+混合编程的代码需要分开编译,运行compile.m文件编译MATLAB代码,在MinGW中运行makefile编译c+代码。iii. 常见错误及其解决将Linux环境下的代码移植到Windows下时,通常运行compile/makefile后会产生编译错误。将编译器产生的错误信息复制到google中搜索查询是一个很有效的解决方案。- 有价值的信息源:wikipedia, stackoverflow, google groups, 项目主页(比如Open

6、CV官网等),cnblogs(博客园), CSDN- MATLAB语法变迁比如,在MATLAB 2012中,mex命令的输出选项由原来的-o变成了-output- Linux/Windows下独有的(库)函数比如Windows下没有名为srand48, drand48的函数这篇文章列举了常见的一些错误及其解决方案- Linux/Windows文件格式的差异例如,可重定位文件在Linux下为.o,在Windows下为.obj.更深入的编译、链接、装载方面的知识,请参阅相关文献(盲荐程序员的自我修养)。2.2 断点调试本小结参考了Windows下Mex程序的调试一文,为便于查阅,将原文内容复制如下

7、。i. 编写mex源文件ii. 用-g选项编译mex源文件iii. 将MATLAB进程绑定到VS编译器iv. 在VS中打开mex源文件v. 在源文件中添加断点vi. 在MATLAB中运行mex程序vii. 等待击中断点后在VS中进行调试3 MEX编程入门3.1 理解MEX函数i. MEX文件编写规范MEX程序包含头文件”mex.h”,支持mex函数。函数入口采用如下形式各参数意义如下- nlhs:输出参数的个数- plhs:初始值为空指针,用户需自建所有的输出数组,并将对应指针放在plhs中- nrhs:输入参数的个数- prhs:指向输入参数的指针,prhs1指向第一个输入参数ii. 常用M

8、X函数- mxArray *mxCreateNumericArray(mwSizendim, constmwSize *dims, mxClassIDclassid, mxComplexityComplexFlag)创建一个数组,ndim为数组维数的个数(默认值为2),即dims数组的长度;dims为数组维数,例如dims = 5, 7,则创建一个57的矩阵;classid为数据类型,比如int, double;ComplexFlag为实数/虚数的标记- double *mxGetPr(constmxArray *pm)得到指向double型数组pm的指针- void *mxCalloc(mw

9、Size n, mwSize size)开辟一块n个元素的空间,每个元素占用size个字节该空间初始化为0(与c+ new运算符不同,new运算符不会对空间初始化,需要调用memset函数进行初始化)- void mxFree(void *ptr)释放ptr所指向的空间3.2 MATLAB与C+数据结构的差别数组是MATLAB的基本存储单位,MATLAB按“列”存储数组中的元素,而C+按“行”存放数组元素。例如,在MATLAB中把一个33的矩阵转化成数列,得到结果如下:C+存储格式的一个小例子程序运行结果3.3 数据格式转换代码实例为了重用MATLAB代码,有时需要对OpenCV格式的数据进行

10、转化,使其符合MATLAB格式,本节总结了两种格式的差异,并给出了代码示例。i. MATLAB mat格式与OpenCV Mat格式的差异两种数据结构的差异主要在以下3点- 在OpenCV中,默认的颜色通道顺序是BGR,以像素为单位存放,即一个像素的RGB值相邻存放在一起;在MATLAB中,所有的R channel 排一起,然后是G channel,再是B。- OpenCVIplImage的默认精度为8U, MATLAB默认精度是 64double- MATLAB数组元素按列存放,C+按行存放,需要对OpenCV的Mat进行转置(cvTranspose),使内存格式对齐ii. 代码实例上述代码

11、为将IplImage结构的数据转化为了符合MATLAB mat格式的数据,存储在Mat结构中。对于IplImage的每个通道,提取该通道的数据,对其进行转置,赋值到目标存储空间中。4 Git使用入门4.1 什么是Git?Git是一个开源的分布式版本控制系统,用以有效、高速的处理从很小到非常大的项目版本管理,是 Linus Torvalds 为了帮助管理 Linux 内核开发而开发的一个开放源码的版本控制软件。所谓版本控制系统 (Version Control System),从狭义上来说,它是软件项目开发过程中用于储存我们所写的代码所有修订版本的软件,但事实上我们可以将任何对项目有帮助的文档交

12、付版本控制系统进行管理。目前,许多自由软件项目都使用Git进行代码版本管理,比如CMU的exemplar, Ruby on Rails, django等。其他常用的代码版本工具还有svn, cvs, Mercurial. 支持git的代码托管站点有google code, sourceforge, github等. 4.2 为何使用Git?源代码管理(SCM)系统可以对源代码的修改进行回滚,从而将有害的代码剔除出项目之外,或者简单地跟踪哪些人修改了代码的哪些行的内容。版本控制系统试图解决开发人员在试图同时对某个文件进行修改时所出现的冲突问题,可以防止用户覆盖其他人所作的修改。版本控制系统是为懒人准备的,它让懒人们比那些善于备份文档的勤劳人拥有更干净的文件系统以及更多的可以活着的时间。4.3 Git环境配置github上的帮助文档提供了git安装,创建repository和复制repository的过程。其他快速入门材料:简易入门指南、IBM developerworks的Git入门(提供了很多学习资源的链接)Appendix I - Google 搜索技巧i. 信息图-从google获得更多ii. 101个Google技巧

展开阅读全文
相关资源
相关搜索

当前位置:首页 > IT计算机/网络 > 其它相关文档

电脑版 |金锄头文库版权所有
经营许可证:蜀ICP备13022795号 | 川公网安备 51140202000112号