VC和Matlab混合编程.pptVIP

  1. 1、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。。
  2. 2、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载
  3. 3、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
  4. 4、该文档为VIP文档,如果想要下载,成为VIP会员后,下载免费。
  5. 5、成为VIP后,下载本文档将扣除1次下载权益。下载后,不支持退款、换文档。如有疑问请联系我们
  6. 6、成为VIP后,您将拥有八大权益,权益包括:VIP文档下载权益、阅读免打扰、文档格式转换、高级专利检索、专属身份标志、高级客服、多端互通、版权登记。
  7. 7、VIP文档为合作方或网友上传,每下载1次, 网站将根据用户上传文档的质量评分、类型等,对文档贡献者给予高额补贴、流量扶持。如果你也想贡献VIP文档。上传文档
查看更多
VC和Matlab混合编程

VC和Matlab混合编程总结 同山 2007.10.14. / 引言 对于计算机图形学的研究,有一些工具软件是我们需要了解和掌握的: Visual C++ Matlab ACIS …… 引言 Visual C++ 基本的编程实现平台(OpenGL) 编译语言,代码运行速度快 可脱离开发平台运行,易于工程中使用 代码编制复杂,不适合算法设计初期使用 缺少通用的常用数值运算功能(矩阵…) 引言 Matlab 解释语言,易于实现,适用于算法设计 具有常用的数值运算功能 代码运行速度慢 不能脱离Matlab开发平台运行 对比 在VC中实现二维矩阵的存储和输出: 矩阵相加,相乘,求逆,稀疏矩阵…… 对比 在Matlab中实现二维矩阵的相关操作 但是Matlab运行速度要比VC慢几百倍 VC和Matlab的混合编程 有多种方法可以进行VC和Matlab的混合编程: VC调用Matlab引擎 matlab程序编译为dll c++程序编译为mex VC调用Matlab c Math Library VC调用Matlab c++ Math Library COM …… 在VC中调用Matlab C++ Math Library实现二维矩阵的操作: 编程方便,有数值运算库;速度快 ? Step by Step… 下面考虑将C++的数组转换为Matlab C++ Math Library的mwArray结构 可以方便地利用mwArray结构,建立顶点相关边长权稀疏矩阵,进行三角网格数据的相关操作 我们还可以不安装Matlab的开发环境,就能使用它的数学库函数 首先看看具体开发工具的设置: 应用举例 求三角网格表面的近似测地线 切原始网格的边,迭代算法,数据结构复杂,直接用VC实现困难 计算量大,一万顶点网格的顶点邻接矩阵的规模为108,直接用Matlab实现算法速度太慢 * * double matrix[3][3] = {1,2,3,4,5,6,7,8,9}; for (int i=0;i3;i++) { for (int j=0;j3;j++) coutmatrix[i][j] ; cout\n; } ? ? a = [1 2 3;4 5 6;7 8 9]; b = 2*a c = a*b inv(a) sparse(a) 矩阵初始化赋初值 矩阵与标量的相乘 矩阵乘法 矩阵求逆 稀疏矩阵的实现 ? 能否结合VC和Matlab的优点? VC和Matlab混合编程! mwArray a,b,c; a = ones(10,10); b = randon(10,10); c = a*b; c=inv(c); c=sparse(c) 矩阵变量定义 矩阵初始化 矩阵初始化 矩阵乘法 矩阵求逆 稀疏矩阵的实现 I Matlab C++ Math Library! 1 将Matlab\extern\include下所有的头文件打包为include.rar,解压缩到用户目录/test下 2 将mglinstaller.exe文件复制到用户目录/test下,并运行解压缩出动态库 3 在VC的Tools-Options中将上述的头文件和库文件目录加入到Directory下 4 新建工程,按照下面的图片依次设置 5 在程序中#include matlab.hpp 现在可以使用 Matlab C++ Math Library 了!!! int Faces[4][3] = {1,2,3,2,4,3,3,4,6,4,5,6}; double Vertexs[6][3]={0,0,0,1,1,0,1,-1,0,2,-0.2, 0,3,-0.8,0,2.8,1,0}; // 将网格顶点数据附为mwArray类型变量 mwArray mVertexes = zeros(6,3); for (i=1;i=6;i++) for (j=1;j=3;j++) mVertexes(i,j) = Vertexs[i-1][j-1]; // 将网格顶点数据附为mwArray类型变量 mwArray mFaces = zeros(4,3); for (i=1;i=4;i++) for (j=1;j=3;j++) mFaces(i,j) = Faces[i-1][j-1]; // 获得顶点相关边长权稀疏矩阵 mwArray v2v = sparse(zeros(6,6)); for (i=1;i=4;i++) // 对面遍历 { m

文档评论(0)

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

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

1亿VIP精品文档

相关文档