




已阅读5页,还剩8页未读, 继续免费阅读
版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
MATLAB/C+混合编程入门CopyrightAVIPAVIP 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什么是Git?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计划,点击这里,用校园邮箱(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(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/document之类的文件,首先阅读该类文件,其中通常包括了运行该项目所需的环境配置、编译步骤、demo运行说明等内容ii. MATLAB和C+混合编程的代码需要分开编译,运行compile.m文件编译MATLAB代码,在MinGW中运行makefile编译c+代码。iii. 常见错误及其解决将Linux环境下的代码移植到Windows下时,通常运行compile/makefile后会产生编译错误。将编译器产生的错误信息复制到google中搜索查询是一个很有效的解决方案。- 有价值的信息源:wikipedia, stackoverflow, google groups, 项目主页(比如OpenCV官网等),cnblogs(博客园), CSDN- MATLAB语法变迁比如,在MATLAB 2012中,mex命令的输出选项由原来的-o变成了-output- Linux/Windows下独有的(库)函数比如Windows下没有名为srand48, drand48的函数这篇文章列举了常见的一些错误及其解决方案- Linux/Windows文件格式的差异例如,可重定位文件在Linux下为.o,在Windows下为.obj.更深入的编译、链接、装载方面的知识,请参阅相关文献(盲荐程序员的自我修养)。2.2 断点调试本小结参考了Windows下Mex程序的调试一文,为便于查阅,将原文内容复制如下。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. 常用MX函数- 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(mwSize 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格式的数据进行转化,使其符合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. 代码实例上述代码为将IplImage结构的数据转化为了符合MATLAB mat格式的数据,存储在Mat结构中。对于IplImage的每个通道,提取该通道的数据,对其进行转置,赋值到目标存储空间中。4 Git使用入门4.1 什么是Git?Git是一个开源的分布式版本控制系统,用以有效、高速的处理从很小到非常大的项目版本管理,是 Linus Torvalds 为了帮助管理 Linux 内核开发而开发的一个开放源码的版本控制软件。所谓版本控制系统 (Version Control System),从狭义上来说,它是软件项目开发过程中用于储存我们所写的代码所有修订版本的软件,但事实上我们可以将任何对项目有帮助的文档交付版本控制系统进行管理。目前,许多自由软件项目都使用Git进行代码版本管理,比如CMU的exemplar, Ruby on Rails, django等。其他常用的代码版本工具还有svn, cvs, Mercurial. 支持git的代码托管站点有google code, sourceforge, github等. 4.2 为何使用Git?源代码管理(SCM)系统可以对源代码的修改进行回滚,从而将有害的代码剔除出项目之外,或者简单地跟踪哪些人修改了代码的哪些行的内容。版本控制系统试图解决开发人员在试图同时对某个文件进行修改时所出现的冲突问题,可以防止用户覆盖其他人所作的修改。版本控制系统是为懒人准备的,它让懒人们比那些善于备份文档的勤劳人拥有更干净的
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 《诗经》二首《蒹葭》课件
- 恋迹社区工作总结
- 亲子互动情感小课件
- 村血防工作汇报
- 亲仁弟子规课件
- 事考帮课件知乎
- 公司级安全培训授课方式课件
- 护理学生个人介绍
- 公司码头安全培训内容课件
- 机场登机口业务培训
- 医学课件-护理评估课件
- 利用“水量平衡原理”分析地理问题 【思维导图+重难点突破】 高考地理 考点全覆盖式精讲 高效复习备考课件
- 幼儿园大班安全教育:《暴力玩具不能玩》 课件
- (新版)水电站知识问答题题库300题(含答案)
- 26个英文字母大小写描红
- 外科颅内和椎管内血管性疾病 课件
- 养老院预算及成本管理制度
- DL∕T 1867-2018 电力需求响应信息交换规范
- 版良性前列腺增生诊疗指南PPT
- 【EHS领导力培训】安全领导力与执行力培训(86页)
- 预制箱梁运输及安装施工技术方案及施工方法
评论
0/150
提交评论