如何用已经驱动的引擎,向 MATLAB 发送运行命令?

shengjing 2003-12-31 06:29:32
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);

}


后面的两条运行不能运行,请指教!
...全文
36 1 打赏 收藏 转发到动态 举报
写回复
用AI写文章
1 条回复
切换为时间正序
请发表友善的回复…
发表回复
yphy 2004-01-04
  • 打赏
  • 举报
回复
up

1,178

社区成员

发帖
与我相关
我的任务
社区描述
C++ Builder 数据库及相关技术
社区管理员
  • 数据库及相关技术社区
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧