VC和Matlab溷合编程总结

上传人:ll****x 文档编号:243144867 上传时间:2024-09-16 格式:PPT 页数:25 大小:638.50KB
返回 下载 相关 举报
VC和Matlab溷合编程总结_第1页
第1页 / 共25页
VC和Matlab溷合编程总结_第2页
第2页 / 共25页
VC和Matlab溷合编程总结_第3页
第3页 / 共25页
点击查看更多>>
资源描述
单击此处编辑母版标题样式,单击此处编辑母版文本样式,第二级,第三级,第四级,第五级,*,VC和Matlab混合编程总结,同山,2007.10.14.,1,引言,对于计算机图形学的研究,有一些工具软件是我们需要了解和掌握的:,Visual C+,Matlab,ACIS,2,引言,Visual C+,基本的编程实现平台(&OpenGL),编译语言,代码运行速度快,可脱离开发平台运行,易于工程中使用,代码编制复杂,不适合算法设计初期使用,缺少通用的常用数值运算功能(矩阵),3,引言,Matlab,解释语言,易于实现,适用于算法设计,具有常用的数值运算功能,代码运行速度慢,不能脱离Matlab开发平台运行,4,对比,在VC中实现二维矩阵的存储和输出:,矩阵相加,相乘,求逆,稀疏矩阵,double matrix33 = 1,2,3,4,5,6,7,8,9;,for (int i=0;i3;i+),for (int j=0;j3;j+),coutmatrixij ;,coutn;,5,对比,在Matlab中实现二维矩阵的相关操作,但是Matlab运行速度要比VC慢几百倍,a = 1 2 3;4 5 6;7 8 9;,b = 2*a,c = a*b,inv(a),sparse(a),矩阵初始化赋初值,矩阵与标量的相乘,矩阵乘法,矩阵求逆,稀疏矩阵的实现,6,能否结合,VC,和,Matlab,的优点?,VC,和,Matlab,混合编程!,7,VC和Matlab的混合编程,有多种方法可以进行VC和Matlab的混合编程:,VC调用Matlab引擎,matlab程序编译为dll,c+程序编译为mex,VC调用Matlab c Math Library,VC调用Matlab c+ Math Library,COM,8,在VC中调用Matlab C+ Math Library实现二维矩阵的操作:,编程方便,有数值运算库;速度快,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!,9,Step by Step,10,下面考虑将C+的数组转换为Matlab C+ Math Library的mwArray结构,可以方便地利用mwArray结构,建立,顶点相关边长权稀疏矩阵,进行三角网格数据的相关操作,我们还可以不安装Matlab的开发环境,就能使用它的数学库函数,首先看看具体开发工具的设置:,11,1 将Matlabexterninclude下所有的头文件打包为include.rar,解压缩到用户目录/test下,2 将mglinstaller.exe文件复制到用户目录/test下,并运行解压缩出动态库,3 在VC的Tools-Options中将上述的头文件和库文件目录加入到Directory下,4 新建工程,按照下面的图片依次设置,12,13,14,15,16,5 在程序中#include ,现在可以使用,Matlab C+ Math Library,了!,17,int Faces43 = 1,2,3,2,4,3,3,4,6,4,5,6;,double Vertexs63=0,0,0,1,1,0,1,-1,0,2,-0.2,0,3,-0.8,0,2.8,1,0;,18,/ 将网格顶点数据附为mwArray类型变量,mwArray mVertexes = zeros(6,3);,for (i=1;i=6;i+),for (j=1;j=3;j+),mVertexes(i,j) = Vertexsi-1j-1;,/ 将网格顶点数据附为mwArray类型变量,mwArray mFaces = zeros(4,3);,for (i=1;i=4;i+),for (j=1;j=3;j+),mFaces(i,j) = Facesi-1j-1;,19,/ 获得顶点相关边长权稀疏矩阵,mwArray v2v = sparse(zeros(6,6);,for (i=1;i=4;i+),/ 对面遍历,mwArray v1 = mFaces(i,1);,/面上的一个顶点序号,mwArray v2 = mFaces(i,2);,mwArray v3 = mFaces(i,3);,mwArray v1xyz = mVertexes(v1,colon();,/面的三个顶点的三维坐标向量,mwArray v2xyz = mVertexes(v2,colon();,mwArray v3xyz = mVertexes(v3,colon();,v2v(v1,v2) = norm(v1xyz-v2xyz);,/用对应的边长向顶点相关系数矩阵赋值,v2v(v1,v3) = norm(v1xyz-v3xyz);,v2v(v2,v3) = norm(v2xyz-v3xyz);,20,/ 矩阵运算,mwArray mVertexes2 = 2*mVertexes;,/ 矩阵求逆 inv,/ 集合交并补 intersect,/ 排序 sort,/ .,/ 获得mwArray数据的值,for (i=1;i=6;i+),for (j=1;j=3;j+),mwArray vxyz = mVertexes(i,j);,Vertexsi-1j-1 = vxyz.ExtractScalar(1);,21,应用举例,求三角网格表面的近似测地线,切原始网格的边,迭代算法,数据结构复杂,直接用VC实现困难,计算量大,一万顶点网格的顶点邻接矩阵的规模为10,8,直接用Matlab实现算法速度太慢,22,应用举例:,求539点Bunny三角网格表面一条近似测地线,原来需要40s,现需要0.25s,23,应用举例:,求32316点弥勒佛表面一条近似测地线,原来无法计算,现需要12s,24,参考资料:,MATLAB C+ Math Library 2.1 Reference .pdf,MATLAB C+ Math Library 2.1 Users Guide.pdf,25,
展开阅读全文
相关资源
正为您匹配相似的精品文档
相关搜索

最新文档


当前位置:首页 > 图纸专区 > 课件教案


copyright@ 2023-2025  zhuangpeitu.com 装配图网版权所有   联系电话:18123376007

备案号:ICP2024067431-1 川公网安备51140202000466号


本站为文档C2C交易模式,即用户上传的文档直接被用户下载,本站只是中间服务平台,本站所有文档下载所得的收益归上传人(含作者)所有。装配图网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对上载内容本身不做任何修改或编辑。若文档所含内容侵犯了您的版权或隐私,请立即通知装配图网,我们立即给予删除!