matlab及C++混合编程_关于mwArray 的一些资料.docxVIP

matlab及C++混合编程_关于mwArray 的一些资料.docx

  1. 1、本文档共5页,可阅读全部内容。
  2. 2、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。
  3. 3、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载
  4. 4、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
  5. 5、该文档为VIP文档,如果想要下载,成为VIP会员后,下载免费。
  6. 6、成为VIP后,下载本文档将扣除1次下载权益。下载后,不支持退款、换文档。如有疑问请联系我们
  7. 7、成为VIP后,您将拥有八大权益,权益包括:VIP文档下载权益、阅读免打扰、文档格式转换、高级专利检索、专属身份标志、高级客服、多端互通、版权登记。
  8. 8、VIP文档为合作方或网友上传,每下载1次, 网站将根据用户上传文档的质量评分、类型等,对文档贡献者给予高额补贴、流量扶持。如果你也想贡献VIP文档。上传文档
查看更多
关于mwArray 的一些资料(一)mxArray 和 mwArray 的区别 转之于 /crystal_avast/article/details/7064796首先,mxArray是Matlab C 函数库的结构体,而mwArray是Matlab C++ 函数库中对mxArray的包装类。其次,二者的内存管理方式不同。mxArray的内存管理方式比较松散,由于是C函数库,没有数据封装,必须对临时阵列和约束阵列的概念极为明确,并且须 小心地防止内存泄漏(要多写好多代码)。尽管有自动内存管理机制(mlfEnterNewContext,mlfReleasePreviousContext),仍然要处处调用mlfAssign,麻烦得很。然而mwArray就好的多,一切交给 C++对象去搞定,你只要放心地用就可以了。不过Matlab C++函数库为了防止频繁内存分配和释放重写了内存分配和释放等函数。你会发现对于mwArraya,b; a=b;实际上并没有生成两个相同数据块,只是指针,只有发成数据改变时才copy完整数据。??? 再次,这两个东西各自有一套与之相对应的函数。函数的返回值类型不同,需要多加注意。???????? 最后,用的时候mxArray要使用指针,而mwArray直接当类对象使。如果你不是Hardcore级的牛人或具有Hardcore倾向的潜牛人,强烈建议使用后者!可以把mwArray看成类似于程序语言中int, float等基本类型,在具体用的过程中转换成你想要的类型。如果从面向对象编程的角度来看,mwArray其实就是所有数据类型的基类,类似于MFC中的Object对象。在Matlab的开发中,所有的数据对象都先当成mwArray来看待,函数返回值也是以mwArray类型或mwArray数组返回,在二次开发中,根据需要转换成需要的数据类型就可以了,我一般做是将mwArray先转成string,然后再将string解析成数值!mwArray感觉如同面向对象语言中的object类,正因为如此matlab的变量和一般的编程语言不同,它不区分int,float等等。如果熟悉C#的话,对这个估计可以理解的更深。用matlab做法,mwarray是它的基本数据类型,单个变量和数组均适用,具体需要的时候可以转换成相应的数据类型。详细的可以查查matlab的帮助文件,有比较详细的说明。声明mxArray:mxArray *a;mwArray:mwArray a;销毁mxArraymxDestroyArray a;mwArraymwArray类的析构函数自动销毁对象变量赋值mxArraymemcpy(dest_ptr,source_ptr,MAX_SIZE);mwArraymwArray in1(3, 3, mxDOUBLE_CLASS, mxREAL);mwArray in2(3, 3, mxDOUBLE_CLASS, mxREAL);in1.SetData(data, 9);in2.SetData(data, 9);关于mwArray 的一些资料(二)#include mclmcr.h // mwArray 类型声明可以把 mwArray看成类似于程序语言中int,float等基本类型,在具体用的过 程中转换成你想要的类型。如果从面向对象编程的角度来看,mwArray其实就是所有数据类型的基类,类似于MFC中的Object对象。在Matlab 的开发中,所有的数据对象都先当成mwArray来看待,函数返回值也是以mwArray类型或mwArray数组返回,在二次开发中,根据需要转换成需 要的数据类型就可以了,我一般做是将mwArray先转成string,然后再将string解析成数值!链接地址:/thread-766003-1-1.htmlmxArray结构体:该结构定义在matlab根目录\extern\include目录下matrix.h文件中。所有的有关MEX文件的实例及头文件均存放在matlab根目录\extern目录下。?针对MATLAB中所有数据类型,如数值阵列(双精度、单精度、int8、int16等)、字符串、离散矩阵、单元阵列、结构体、对象、多维阵列、逻辑阵列、空阵列,这些MatlAB的数据类型,都可以用一个maxArray结构体来定义。参考文献:《C语言与matlab接口-编程与实例》李传军 北京邮电大学出版社mxDOUBLE_CLASS 代表 双精度其他的可看:(在头文件matrix.h中,地址是matlab根目录\extern\include下)C与matlab在存储方式的区别在C语言中,数据是按行存储的,如果按列读取就会出现异常。同样,在matlab语言中,数据是按列存储的,如果按行读取就会出现异常。比较

文档评论(0)

kehan123 + 关注
实名认证
文档贡献者

该用户很懒,什么也没介绍

1亿VIP精品文档

相关文档