- 1、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。。
- 2、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载。
- 3、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
- 4、该文档为VIP文档,如果想要下载,成为VIP会员后,下载免费。
- 5、成为VIP后,下载本文档将扣除1次下载权益。下载后,不支持退款、换文档。如有疑问请联系我们。
- 6、成为VIP后,您将拥有八大权益,权益包括:VIP文档下载权益、阅读免打扰、文档格式转换、高级专利检索、专属身份标志、高级客服、多端互通、版权登记。
- 7、VIP文档为合作方或网友上传,每下载1次, 网站将根据用户上传文档的质量评分、类型等,对文档贡献者给予高额补贴、流量扶持。如果你也想贡献VIP文档。上传文档
查看更多
图4-5 设置可执行文件的对话框 4.4 MEX 文 件 示 例 例4-3 创建稀疏矩阵。 首先向读者演示一个创建稀疏矩阵的例子,该例子其实是第2章创建稀疏矩阵C语言例子的翻版,这里使用Fortran语言将其重新写了一遍,通过这个例子重点了解一下mxCopy函数的具体使用方法,下面是该例子的源代码: 001 C fcreatesparse.f 002 C 创建稀疏矩阵 003 C 入口函数 004 subroutine mexFunction(nlhs, plhs, nrhs, prhs) 005 C------------------------------------------ 006 C 参数声明 007 integer plhs(*), prhs(*) 008 integer nlhs, nrhs 009 C 指针 010 integer ir, jc , pr 011 C 实际数据 012 real*8 pdata(6) 013 data pdata /3, 1, 10, -7, 2, -2/ 014 integer irdata(6) 015 data irdata / 0, 3, 0, 1, 2, 3 / 016 integer jcdata(5) 017 data jcdata / 0, 2, 2, 5, 6 / 018 C------------------------------------------ 019 integer mxGetIr,mxGetJc,mxGetPr 020 integer mxCreateSparse 021 integer mxCopyReal8ToPtr 022 integer mxCopyInteger4ToPtr 023 C 代码行 024 plhs(1) = mxCreateSparse(4 , 4 , 6 , 0) 025 ir = mxGetIr(plhs(1)) 026 jc = mxGetJc(plhs(1)) 027 pr = mxGetPr(plhs(1)) 028 C 内存复制 029 call mxCopyReal8ToPtr(pdata,pr,6) 030 call mxCopyInteger4ToPtr(irdata,ir,6) 031 call mxCopyInteger4ToPtr(jcdata,jc,5) 032 C 函数文件尾部 033 return 034 end 本例子的核心部分从024行开始,首先使用mxCreateSparse函数创建了稀疏矩阵的mxArray数据对象,然后分别使用mxGetIr、mxGetJc、mxGetPr三个函数获取稀疏矩阵的三个重要的指针ir、jc和pr,这里是实数的稀疏矩阵,所以没有pi指针。接着,使用mxCopy函数完成数据内存的复制。这里需要用户注意的是整数类型的数据拷贝,在MATLAB的外部接口函数库中,具有三个不同的函数用于整数类型数据的拷贝,分别是: ● mxCopyInteger1ToPtr。 ● mxCopyInteger2ToPtr。 ● mxCopyInteger4ToPtr。 同样,还有三个函数用于将指针数据拷贝给相应的整数类型数据,这里就不一一列举了。需要读者注意的是,针对具体的整数数据类型须选取不同的拷贝函数。下面编译运行该文件: mex fcreatesparse.f A = fcreatesparse A = (1,1) 3 (4,1) 1 (1,3) 10 (2,3) -7 (3,3) 2 (4,4) -2 full(A) ans = 3 0 10 0 0 0 -7 0 0 0 2 0 1 0 0 -2 例4-4 复数数据。 Fortran语言的数据类型是比较丰富的,其中,其独有的复数数据类型是该语言的一个优势,使其成为了早期计算机数值编程领域首选的编程语言。在MATLAB中,同样有相应的数据类型,不过Fortran语言的复数和MATLAB的复数之间进行交互的时候,只能够通过mxCopy函数完成数据的传递。例4-4演示了Fortran语言MEX文件处理复数的方法。下面是程序的源代码: 00
您可能关注的文档
最近下载
- 黄燕铭荐阅二:公司研究基本框架.pdf VIP
- 下学期高一生物人教版必修2:6.3.2隔离在物种形成中的作用(16张PPT)(含音频+视频).pptx VIP
- 聊天的时候对方撤回消息,一招让你照样能看.pdf VIP
- 煤制甲醇主要危害分析及安全生产策略.docx VIP
- 绿色化工技术在化学工程与工艺中的应用研究.docx VIP
- 高一化学(必修一)离子反应练习题(含答案解析).docx VIP
- 改性壳聚糖对染料废水的脱色研究 毕业论文.doc VIP
- 铝合金门窗方案设计ppt模板.pptx
- 有机改性硅藻土对染料废水中典型染料的吸附特性与机制研究.docx
- 杰美康 JAND系列高压伺服驱动器用户手册.pdf VIP
原创力文档


文档评论(0)