如何用已经驱动的引擎,向 MATLAB 发送运行命令?
void __fastcall TForm1::btnMatLabClick(TObject *Sender)
{
Engine *ep;
mxArray *T = NULL, *result = NULL;
char buffer[BUFSIZE];
double time[10] = { 0.0, 1.0, 2.0, 3.0, 4.0, 5.0, 6.0, 7.0,
8.0, 9.0 };
if (!(ep = engOpen("\0"))) {
fprintf(stderr, "\nCan't start MATLAB engine\n");
return ;
} /*启动MATLAB引擎*/
T = mxCreateDoubleMatrix(1, 10, mxREAL); /*创建一个矩阵*/
mxSetName(T, "T"); /*设置矩阵的名字为“T”*/
memcpy((void *)mxGetPr(T), (void *)time, sizeof(time)); /*向矩阵“T”赋值*/
engPutArray(ep, T);
engEvalString(ep, "x=0:0.1:2*pi;");
engEvalString(ep, "D = .5.*(–9.8).*T.^2;");
engEvalString(ep, "D =sin(x);");
engEvalString(ep, "plot(x,D,'--*');"); /*执行MATLAB命令:绘图*/
engEvalString(ep, "title('Position vs. Time for a falling object');"); /*执行MATLAB命令:给图象加标题*/
engEvalString(ep, "xlabel('Time (seconds)');"); /*执行MATLAB命令:设置X轴坐标*/
engEvalString(ep, "ylabel('位置Position (meters)');"); //*执行MATLAB命令:设置Y轴
//以上命令都能运行,下面命令不能运行
engEvalString(ep, "x0=[5;0.05];");
engEvalString(ep, "fmincon('myobjective',x0,[],[],[],[],[],[],'mycon');");
engClose(ep);
}
后面的两条运行不能运行,请指教!