jimmy1027
2009-05-10, 15:19
我的一段很简单的程序不懂,情教各位帮忙。
首先,利用VC++6.0的MFC建立一个单文档结构的应用程序,加入一个菜单资源,为其映射相应的功能函数;
其次,根据MATLAB引擎实现VC和MATLAB的混合编程步骤(见第三部分)为程序设置相应的编译环境并添加连接库函数;
然后,调用MATLAB的内建函数和命令,主要编写程序代码如下:
…
static double Areal[6]={1,2,3,4,5,6};
mxArray *T=NULL,*a=NULL,*d=NULL;
double time[10]={0,1,2,3,4,5,6,7,8,9};
/*利用mx函数库创建矩阵,传递参数。*/
T=mxCreateDoubleMatrix(1,10,mxREAL);
memcpy((char*)mxGetPr(T),(char*)time,10*sizeof(double));
/*通过上面创建的MATLAB Engine连接句柄将参数传递给Server端*/
engPutVariable(ep,"T",T);
/*调用MATLAB内建的函数和指令*/
engEvalString(ep,"D=.5.*(-9.8).*T.^5;");
engEvalString(ep,"plot(T,D);");
…
最后,添加头文件:
#include "matlab.h"
编译运行,就可以得到如(图1)所示的结果。
http://img685.ph.126.net/tRK2J0PB4P8JaLpeuslQ8A==/1095219134381879240.jpg
帮我解释一下图的结果。。
首先,利用VC++6.0的MFC建立一个单文档结构的应用程序,加入一个菜单资源,为其映射相应的功能函数;
其次,根据MATLAB引擎实现VC和MATLAB的混合编程步骤(见第三部分)为程序设置相应的编译环境并添加连接库函数;
然后,调用MATLAB的内建函数和命令,主要编写程序代码如下:
…
static double Areal[6]={1,2,3,4,5,6};
mxArray *T=NULL,*a=NULL,*d=NULL;
double time[10]={0,1,2,3,4,5,6,7,8,9};
/*利用mx函数库创建矩阵,传递参数。*/
T=mxCreateDoubleMatrix(1,10,mxREAL);
memcpy((char*)mxGetPr(T),(char*)time,10*sizeof(double));
/*通过上面创建的MATLAB Engine连接句柄将参数传递给Server端*/
engPutVariable(ep,"T",T);
/*调用MATLAB内建的函数和指令*/
engEvalString(ep,"D=.5.*(-9.8).*T.^5;");
engEvalString(ep,"plot(T,D);");
…
最后,添加头文件:
#include "matlab.h"
编译运行,就可以得到如(图1)所示的结果。
http://img685.ph.126.net/tRK2J0PB4P8JaLpeuslQ8A==/1095219134381879240.jpg
帮我解释一下图的结果。。