发新话题
打印

VC++调用Matlab的程序运行错误求救!

VC++调用Matlab的程序运行错误求救!

我这里有个例子能运行,一但我将自己的代码加进去就得不到值?
char bufferX[301];
double prul1M[20]={-40,0,4,0,
                                        40,-5.5,0,0.5,
                                        0,5,-4,0,
                                        0,0.5,0,-0.5,
                                        1,1,1,1,
                        };
        double BM[5]={0,0,0,0,1};
        if(!(ep=engOpen(NULL))){
                MessageBox((HWND)NULL,(LPSTR)"Can't start Matlab engine",(LPSTR)"Engwindemo.c",MB_OK);
                exit(-1);
        }
        engSetVisible(ep,0);
p=mxCreateDoubleMatrix(5,4,mxREAL);        
        memcpy((char *)mxGetPr(p),(char *)prul1M,20*sizeof(double));
        b=mxCreateDoubleMatrix(5,1,mxREAL);
        memcpy((char *)mxGetPr(b),(char *)BM,5*sizeof(double));
        engPutVariable(ep,"P",p);
        engPutVariable(ep,"B",b);
        engEvalString(ep,"x=inv(P)*B");
        engOutputBuffer(ep,bufferX,300);
        engEvalString(ep,"whos");
        MessageBox((HWND)NULL,(LPSTR)bufferX,(LPSTR)"Matlab-whos",MB_OK);

        x=engGetVariable(ep,"x");
        engClose(ep);
if(x==NULL)
        {
                MessageBox((HWND)NULL,(LPSTR)"Get array failed",(LPSTR)"Engwindemo.c",MB_OK);
        }
        else
        {
                MessageBox((HWND)NULL,(LPSTR)bufferX,(LPSTR)"Engwindemo.c",MB_OK);
        }

这是我自己加的代码部分,请高手帮帮忙阿!!谢谢了!! 其实核心部分就是求解一个非齐次方程的解。系数矩阵P,B是等号右端项,为一列向量,这两个都能附上值,可是,x就没有值了。高手们到底怎么回事?这个程序运行并没有提示任何错误,只是结果显示的是“Get array failed”。

TOP

Matlab我没有用过,帮你顶。
换个头像,看见广告就眼红,直接封ID。

TOP

谢谢

谢谢了,希望高手帮忙

TOP

发新话题