为了充分利用Matlab的绘图功能,我在VisaulC++中将数组x,y,z的值分别求解出来,利用
Matlab计算引擎,代码如下:
BOOL CResultDia::OnInitDialog() 
{
CDialog::OnInitDialog();// TODO: Add extra initialization here
Tx=NULL;
Ty=NULL;
Tz=NULL;if(!(ep=engOpen(NULL)))
{
MessageBox(NULL,"对不起,不能打开MATLAB计算引擎",MB_OK);
}CMainFrame* pframe = (CMainFrame*)AfxGetMainWnd();
CContactlineDoc* pdoc = (CContactlineDoc*)pframe->GetActiveDocument();
double m=100;
double ptx[100],pty[100],ptz[100];for(int i=0;i<pdoc->N;i++)
{
ptx[i]=pdoc->T_Dot[i].x ;
pty[i]=pdoc->T_Dot[i].y ;
ptz[i]=pdoc->T_Dot[i].z ;
}Tx=mxCreateDoubleMatrix(1,pdoc->N,mxREAL);
Ty=mxCreateDoubleMatrix(1,pdoc->N,mxREAL);
Tz=mxCreateDoubleMatrix(1,pdoc->N,mxREAL);memcpy ((char*) mxGetPr(Tx), (char* ) ptx,(pdoc->N)*sizeof(double));
mxSetName(Tx,"Tx");
memcpy ((char*) mxGetPr(Ty), (char* ) pty,(pdoc->N)*sizeof(double));
mxSetName(Ty,"Ty");
memcpy ((char*) mxGetPr(Tz), (char* ) ptz,(pdoc->N)*sizeof(double));
mxSetName(Tz,"Tz");//将其放入Matlab工作空间engPutArray(ep,Tx );
engPutArray(ep,Ty);
engPutArray(ep,Tz);return TRUE;  // return TRUE unless you set the focus to a control
              // EXCEPTION: OCX Property Pages should return FALSE}ran在利用matlab绘图函数:
engEvalString(ep,"plot3(Tx,Ty,Tz,'o');");
engEvalString(ep,"xlabel('x');");
engEvalString(ep,"zlabel('z');");
engEvalString(ep,"ylabel('y');");
engEvalString(ep,"title('接触线在蜗杆坐标系中');");结果图是有了,但是变形了,比如我计算出来的Tz的一个值是77左右,怎么这样作之后从
图形上看有90多。
不知道怎么回事,各位高手请指教!!
多谢!