我用VC和MATLAB混合编程 想实现将数据用柱型图表示 代码如下:
Engine *ep;
double t[1];
int Sum[1];
t[0]=5; //横坐标的取值
Sum[0]=sum;
if(!(ep=engOpen(NULL)))
{AfxMessageBox("Can't start Matlab engine!");exit(-1);}
mxArray *T=mxCreateDoubleMatrix(1,1,mxREAL);//创建一个2维的DOUBLE类型,阵列行数列数都为1数据是实数
mxArray *TT=mxCreateDoubleMatrix(1,36,mxREAL);
mxArray *TTT=mxCreateDoubleMatrix(1,1,mxREAL);
mxArray *TTTT=mxCreateDoubleMatrix(1,10,mxREAL);
memcpy(mxGetPr(T),t,1*sizeof(double)); //mxGetPr()获取MATLAB数据类型的指针
memcpy(mxGetPr(TT),arrayn,36*sizeof(double));
memcpy(mxGetPr(TTT),Sum,1*sizeof(double));
memcpy(mxGetPr(TTTT),arraym,10*sizeof(double));
engPutVariable(ep,"ep_T",T); //把变量写入MATLAB引擎的工作空间
engPutVariable(ep,"ep_P1",TT);
engPutVariable(ep,"ep_P2",TTT);
engPutVariable(ep,"ep_P3",TTTT);
engEvalString(ep,"ep_D1=var(ep_P1);"); //求方差
engEvalString(ep,"ep_D2=var(ep_P3);"); //求方差
engEvalString(ep,"y=ep_D1/1.0e+131 ;");
engEvalString(ep,"ep_T=1:10"); //隔多少取一个点
engEvalString(ep,"bar(y);"); //画图
engEvalString(ep,"xlabel('工位等待时间 设备负荷率 总时间');");
engEvalString(ep,"ylabel('评价指标');");
engEvalString(ep,"title('钢铁连铸调度计划评价指标');");
engEvalString(ep,"legend('工位等待时间','设备负荷率','总等待时间'); ");
AfxMessageBox("close");
engClose(ep);
mxDestroyArray(T);
mxDestroyArray(TT);
mxDestroyArray(TTT);
mxDestroyArray(TTTT);
其中arrayn arraym是2个数组 他们的方差 还有SUM是3个评价指标 我想把他们用柱型图显示在一个界面里
但只显示第一个柱 ~~~~~ 这到底 为什么
高手帮帮我 吧 我要毕不了业了
谢谢了