预览加载中,请您耐心等待几秒...
1/10
2/10
3/10
4/10
5/10
6/10
7/10
8/10
9/10
10/10

亲,该文档总共22页,到这已经超出免费预览范围,如果喜欢就直接下载吧~

如果您无法下载资料,请参考说明:

1、部分资料下载需要金币,请确保您的账户上有足够的金币

2、已购买过的文档,再次下载不重复扣费

3、资料包下载后请先用软件解压,在使用对应软件打开

VC和Matlab混合编程总结同山2007.10.14.http://tongj1981.cnblogs.com/引言引言引言对比对比能否结合VC和Matlab的优点?VC和Matlab的混合编程在VC中调用MatlabC++MathLibrary实现二维矩阵的操作: 编程方便,有数值运算库;速度快StepbyStep…下面考虑将C++的数组转换为MatlabC++MathLibrary的mwArray结构 可以方便地利用mwArray结构,建立顶点相关边长权稀疏矩阵,进行三角网格数据的相关操作 我们还可以不安装Matlab的开发环境,就能使用它的数学库函数 首先看看具体开发工具的设置:1将Matlab\extern\include下所有的头文件打包为include.rar,解压缩到用户目录/test下 2将mglinstaller.exe文件复制到用户目录/test下,并运行解压缩出动态库 3在VC的Tools-Options中将上述的头文件和库文件目录加入到Directory下 4新建工程,按照下面的图片依次设置5在程序中#include<matlab.hpp> intFaces[4][3]={1,2,3,2,4,3,3,4,6,4,5,6}; doubleVertexs[6][3]={0,0,0,1,1,0,1,-1,0,2,-0.2, 0,3,-0.8,0,2.8,1,0}; //将网格顶点数据附为mwArray类型变量 mwArraymVertexes=zeros(6,3); for(i=1;i<=6;i++) for(j=1;j<=3;j++) mVertexes(i,j)=Vertexs[i-1][j-1]; //将网格顶点数据附为mwArray类型变量 mwArraymFaces=zeros(4,3); for(i=1;i<=4;i++) for(j=1;j<=3;j++) mFaces(i,j)=Faces[i-1][j-1]; //获得顶点相关边长权稀疏矩阵 mwArrayv2v=sparse(zeros(6,6)); for(i=1;i<=4;i++)//对面遍历 { mwArrayv1=mFaces(i,1);//面上的一个顶点序号 mwArrayv2=mFaces(i,2); mwArrayv3=mFaces(i,3); mwArrayv1xyz=mVertexes(v1,colon());//面的三个顶点的三维坐标向量 mwArrayv2xyz=mVertexes(v2,colon()); mwArrayv3xyz=mVertexes(v3,colon()); v2v(v1,v2)=norm(v1xyz-v2xyz);//用对应的边长向顶点相关系数矩阵赋值 v2v(v1,v3)=norm(v1xyz-v3xyz); v2v(v2,v3)=norm(v2xyz-v3xyz); } //矩阵运算 mwArraymVertexes2=2*mVertexes; //矩阵求逆inv //集合交并补intersect //排序sort //...... //获得mwArray数据的值 for(i=1;i<=6;i++) for(j=1;j<=3;j++) { mwArrayvxyz=mVertexes(i,j); Vertexs[i-1][j-1]=vxyz.ExtractScalar(1); }参考资料: MATLABC++MathLibrary2.1Reference.pdf MATLABC++MathLibrary2.1User'sGuide.pdf