主题:请教一个用MATLAB引擎实现与C混合编程的问题
各位:
最近我调用MATLAB引擎实现一个矩阵的运算,然后传到C中,但是结果与直接
在MATLAB中算的不同,程序的错误到是没有,我想了各种办法都不行,望知道的朋友
帮下忙吧,谢谢!部分程序如下:
Engine *ep;
mxArray *xx = NULL,*yy = NULL,*zz = NULL,*u =NULL;
xx = mxCreateDoubleMatrix(16, 16, mxREAL);
memcpy((void *)mxGetPr(xx), (void *)array1, sizeof(array1));
yy = mxCreateDoubleMatrix(16, 16, mxREAL);
zz = mxCreateDoubleMatrix(17, 16, mxREAL);
u= mxCreateDoubleMatrix(16, 1, mxREAL);
engPutVariable(ep,"xx",xx); //将mxArray数组xx写入到Matlab工作空间,命名为xx
engPutVariable(ep,"yy",yy);//将mxArray数组yy由于写入到Matlab工作空间,命名为yy。
engPutVariable(ep,"zz",zz);
engPutVariable(ep,"u",u);
engEvalString(ep, "yy=xx-eye(size(xx));");
engEvalString(ep,"zz=[yy;0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0];");
经检验:就是最后一行的结果错误,本来应该是多加一行全0的,但是结果不是的
最近我调用MATLAB引擎实现一个矩阵的运算,然后传到C中,但是结果与直接
在MATLAB中算的不同,程序的错误到是没有,我想了各种办法都不行,望知道的朋友
帮下忙吧,谢谢!部分程序如下:
Engine *ep;
mxArray *xx = NULL,*yy = NULL,*zz = NULL,*u =NULL;
xx = mxCreateDoubleMatrix(16, 16, mxREAL);
memcpy((void *)mxGetPr(xx), (void *)array1, sizeof(array1));
yy = mxCreateDoubleMatrix(16, 16, mxREAL);
zz = mxCreateDoubleMatrix(17, 16, mxREAL);
u= mxCreateDoubleMatrix(16, 1, mxREAL);
engPutVariable(ep,"xx",xx); //将mxArray数组xx写入到Matlab工作空间,命名为xx
engPutVariable(ep,"yy",yy);//将mxArray数组yy由于写入到Matlab工作空间,命名为yy。
engPutVariable(ep,"zz",zz);
engPutVariable(ep,"u",u);
engEvalString(ep, "yy=xx-eye(size(xx));");
engEvalString(ep,"zz=[yy;0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0];");
经检验:就是最后一行的结果错误,本来应该是多加一行全0的,但是结果不是的