vc里调用matlab[zz]在vc里调用matlab的mat文件或调用它的引擎,首先需要在TOOLS->options->directories->includefiles和libraryfiles里包含:c:MATLAB\EXTERN\INCLUDE和c:MATLAB\EXTERN\LIB\WIN32\MICROSOFT\MSVC601.如果只调用mat数据文件,那么在工程里需要包含头文件mat.h在Project->settings->link->object/librarymodules里添加libmx.liblibmat.lib实例:1)将vc里的一个数组y[4][12],写到一个mat文件里。MATFile*mfp;//mat文件指针mxArray*A_ptr;//矩阵指针double*A;//打开一个test.mat文件,只写,(如果不存在就新建,否则删除重建)mfp=matOpen("d:\\Programes\\matlab\\work\\test.mat","w");//新建一个12*4的矩阵只有实部(在matlab里矩阵都是复矩阵)A_ptr=mxCreateDoubleMatrix(12,4,mxREAL);//让指针A指向这个矩阵A=mxGetPr(A_ptr);//将y的值传给该矩阵(A[i],i代表A所指向的矩阵的第i个元素。在VC里数组是按行排放的,在matlab里矩阵是按列排放的,)for(inti=0;i<4;i++)for(intj=0;j<12;j++)A[i*12+j]=y[i][j];//将矩阵写到文件test内,起名为xmatPutVariable(mfp,"x",A_ptr);//关闭文件matClose(mfp);//释放矩阵空间mxDestroyArray(A_ptr);实例:2)将一个mat文件,读到vc里的一个数组y[4][12]。MATFile*mfp;mxArray*A_ptr;double*A;mfp=matOpen("d:\\Programes\\matlab\\work\\test.mat","r");//如果既要读又要写就用"u"if(mfp==NULL)return;A_ptr=matGetVariable(mfp,"x",);A=mxGetPr(A_ptr);for(inti=0;i<4;i++)for(intj=0;j<12;j++)y[i][j]=A[i*12+j];matClose(mfp);mxDestroyArray(A_ptr);2.如果要调用它的引擎,那么在工程里需要包含头文件engine.h在Project->settings->link->object/librarymodules里添加libmx.liblibmat.liblibeng.lib实例://将刚才y数组的一行画出来Engine*ep;mxArray*A_ptr;double*A;A_ptr=mxCreateDoubleMatrix(12,1,mxREAL);A=mxGetPr(A_ptr);//打开matlab引擎ep=engOpen("D:\\Programes\\matlab\\bin\\win32\\matlab");for(intj=0;j<12;j++)A[j]=y[0][j];//将矩阵A_ptr起名为y放进matlab的数据区engPutVariable(ep,"y",A_ptr);//用指令x=0:1:11新建一个x矩阵//函数engEvalString(Engine*ep,char*string)里的参数string就相当于在matlab的命令窗口里打的命令。engEvalString(ep,"x=0:1:11");//调用plot(x,y)画图engEvalString(ep,"plot(x,y)");mxDestroyArray(A_ptr);//关闭引擎,如果后面的程序继续要用就不用关了engClose(ep);上面所用到的函数都可以在MATLAB\EXTERN\INCLUDE\\mat.h和engine.h里看到其声明4VC++环境下的Matlab开发从上面的转换可以看出,利用Matlab编译器命令生成的C/C++文件,实际上其函数的输入输出参数为mwArray对象。那么可以考虑直接在VC++或其它C++编译器中利用Matlab的库函数来完成简单计算任务。MatlabC/C++数学函数库中最基本的数据类型为矩阵对象,即mwArray类对象,几乎所有的库函数均以它们作为计算和处理的对象,掌握mwArray对象的操作,对于学习MatlabC/C++数学库的使用是至关重要的。MatlabC/C++数学库通过类mwArray对数值矩阵、稀疏矩阵、字符矩阵、单元矩阵和结构体矩阵提供了支持,矩阵对象的创建如下:mwArrayA;//构造一个空矩阵对象mwArrayA(double/int);//数子的矩阵对象mwArrayA(introw,intcol,double/int/unsignedshort*real=NULL,double/int/unsignedshort*image=NULL)mwArrayA(constmwArray)//拷贝构造矩阵对象C/C++调用Matlab函数将大量使用矩阵对象的索引操作,完成C/C++数据到mwArray对象的赋值和mwArray对象到C/C++数据的检索。MatlabC/C++函数库提供ExtractScalar和ExtractData两个函数完成索引操作。另外用GetDate()和mxGetPr、mxGetPi组合可以得到指向mwArray对象的数据的指针。在VC++环境中调用Matlab数学函数库,还要注意异常的处理。Matlab定义一组以mwException为基类的异常类。异常处理如下:try{……}catch(mwException){mwDisplayException(ex);……}5提供简单算例在计算机图形学中关于曲线、曲面进行插值或拟合,将大量使用求解线性方程组。如在求B样条曲线插值问题中...