我自己在vc++里调用matlab引擎可以使用plot绘制两个数组中的数值对应坐标连线。但是将这两个数组中数值进行插值(spline)就绘不出了。请各位高手帮帮忙,帮着写一下这个简单程序。就几句话,憋好久了。
Engine *ep;
MessageBox("请单击确定按钮,Windows正在准备启动MATLAB引擎!",
"Matlab 引擎",MB_OK|MB_ICONINFORMATION);
if(!(ep=engOpen(NULL)))
{
MessageBox("不能打开Matlab引擎,请检查是否安装Matalab及其路径设置正确与否!"
,"engine demo",MB_OK);
exit(-1);
}
engSetVisible(ep,1);
mxArray *xx=NULL;
mxArray *yy=NULL;
xx=mxCreateDoubleMatrix(1,num,mxREAL);
yy=mxCreateDoubleMatrix(1,num,mxREAL);
memcpy((void*)mxGetPr(xx),(void*)x,num*sizeof(double));
memcpy((void*)mxGetPr(yy),(void*)y,num*sizeof(double));
engPutVariable(ep,"xx",xx);
engPutVariable(ep,"yy",yy);
engEvalString(ep,"n=mxGetNumberOfElements(xx);");//10
engEvalString(ep,"t=1:n;");
engEvalString(ep,"ts=1:1/10:n;");
engEvalString(ep,"xs=spline(t,xx,ts);");
engEvalString(ep,"ys=spline(t,yy,ts);");
engEvalString(ep,"hold on");
engEvalString(ep,"plot(xs,ys,'r');");
engEvalString(ep,"hold off");
engEvalString(ep,"title('材料B-H曲线');");
engEvalString(ep,"xlabel('H(A/m)');");
engEvalString(ep,"ylabel('B(T)');");
engEvalString(ep,"grid on;");
mxDestroyArray(xx);
mxDestroyArray(yy);
// engClose(ep);
delete []x;delete []y;