www.pudn.com > matlab8.zip > engexam.c


#include  
#include  
#include  
#include "engine.h" 
 
int PASCAL WinMain (HANDLE hInstance, 
						 HANDLE hPrevInstance, 
						 LPSTR  lpszCmdLine, 
						 int    nCmdShow) 
{ 
	Engine *ep; 
	mxArray *P=NULL,*r=NULL; 
	char buffer[301]; 
	double poly[4]={1,0,-2,5}; /*三次多项式的系数*/ 
 
	/*启动本机MATLAB引擎,如果出错则退出程序。 
	如想启动远程主机上的MATLAB,则用相应主机名代替\0*/ 
	if (!(ep=engOpen("\0"))) { 
		fprintf(stderr,"\nCan't start MATLAB engine\n"); 
		return EXIT_FAILURE;} 
 
	/*创建变量P,将poly变量中定义的多项式系数值拷贝至该变量P*/ 
	P=mxCreateDoubleMatrix(1,4,mxREAL); 
	/*给变量P取名为p,将P传递到引擎空间,p将被运用于MATLAB表达式中*/ 
	mxSetName(P,"p");  
	memcpy((char *)mxGetPr(P),(char *)poly,4*sizeof(double)); 
	engPutArray(ep,P); 
 
	/*利用MATLAB求解多项式根,并写至缓冲区*/ 
	engOutputBuffer(ep,buffer,300); 
	engEvalString(ep,"r=roots(p)"); 
 
	/*将缓冲区中的内容输出屏幕窗口,关闭MATLAB引擎,释放指针P。*/ 
	MessageBox(NULL,buffer,"Engexam.c--多项式x^3-2x+5的根",MB_OK); 
	engClose(ep); 
	mxDestroyArray(P); 
 
	return EXIT_SUCCESS; 
}