VC中调用matlab的合集

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样条曲线插值问题中...

1、当您付费下载文档后,您只拥有了使用权限,并不意味着购买了版权,文档只能用于自身使用,不得用于其他商业用途(如 [转卖]进行直接盈利或[编辑后售卖]进行间接盈利)。
2、本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供参考,付费前请自行鉴别。
3、如文档内容存在侵犯商业秘密、侵犯著作权等,请点击“举报”。

常见问题具体如下:

1、问:已经付过费的文档可以多次下载吗?

      答:可以。登陆您已经付过费的账号,付过费的文档可以免费进行多次下载。

2、问:已经付过费的文档不知下载到什么地方去了?

     答:电脑端-浏览器下载列表里可以找到;手机端-文件管理或下载里可以找到。

            如以上两种方式都没有找到,请提供您的交易单号或截图及接收文档的邮箱等有效信息,发送到客服邮箱,客服经核实后,会将您已经付过费的文档即时发到您邮箱。

注:微信交易号是以“420000”开头的28位数字;

       支付宝交易号是以“2024XXXX”交易日期开头的28位数字。

客服邮箱:

biganzikefu@outlook.com

所有的文档都被视为“模板”,用于写作参考,下载前须认真查看,确认无误后再购买;

文档大部份都是可以预览的,笔杆子文库无法对文档的真实性、完整性、准确性以及专业性等问题提供审核和保证,请慎重购买;

文档的总页数、文档格式和文档大小以系统显示为准(内容中显示的页数不一定正确),网站客服只以系统显示的页数、文件格式、文档大小作为依据;

如果您还有什么不清楚的或需要我们协助,可以联系客服邮箱:

biganzikefu@outlook.com

常见问题具体如下:

1、问:已经付过费的文档可以多次下载吗?

      答:可以。登陆您已经付过费的账号,付过费的文档可以免费进行多次下载。

2、问:已经付过费的文档不知下载到什么地方去了?

     答:电脑端-浏览器下载列表里可以找到;手机端-文件管理或下载里可以找到。

            如以上两种方式都没有找到,请提供您的交易单号或截图及接收文档的邮箱等有效信息,发送到客服邮箱,客服经核实后,会将您已经付过费的文档即时发到您邮箱。

注:微信交易号是以“420000”开头的28位数字;

       支付宝交易号是以“2024XXXX”交易日期开头的28位数字。

确认删除?