24小时热门版块排行榜    

查看: 432  |  回复: 0

无知为知

新虫 (初入文坛)

[求助] vc++6.0计算矩阵

我用vc++6.0调用matlab engine计算矩阵M*N,,不知为什么结果全是0。,请大家帮忙,看看程序错在哪里!
#include
#include
#include
#include
#include
#include "engine.h"
#include "math.h"
#include "stdio.h"

Engine* ep ;
mxArray *temp1=mxCreateDoubleMatrix(1,1,mxREAL);
double s0,s1,s2,s3;

int main()
{
               
        fprintf(stderr, "╬╬╬╬╬╬╬╬╬╬╬╬╬╬╬╬╬╬╬╬╬╬╬\n";
        fprintf(stderr, "╬                                    ╬\n";
        fprintf(stderr, "╬   Starting MATLAB engine,please wait..   ╬\n";
        fprintf(stderr, "╬                                    ╬\n";
        fprintf(stderr, "╬╬╬╬╬╬╬╬╬╬╬╬╬╬╬╬╬╬╬╬╬╬╬\n";
        if (!(ep = engOpen("\0"))
        {
                fprintf(stderr, "\nCan't start MATLAB engine\n";
                return 0;
        }
     //实现vc向matlab输送确定的矩阵
         double M[4]={-11,1,2,14};
     mxArray *m=mxCreateDoubleMatrix(2,2,mxREAL);
     memcpy((void *)mxGetPr(m), (void *)M, sizeof(M));
         engPutVariable(ep,"m",m);

         double N[4]={-1,5,2,10};
     mxArray *n=mxCreateDoubleMatrix(2,2,mxREAL);
     memcpy((void *)mxGetPr(n), (void *)N, sizeof(N));
         engPutVariable(ep,"n",n);

    engEvalString(ep,"E=M*N;";

    engEvalString(ep,"vsc_s0=E(1:1,1:1);";
    engEvalString(ep,"vsc_s1=E(1:1,2:2);";
    engEvalString(ep,"vsc_s2=E(2:2,1:1);";
        engEvalString(ep,"vsc_s3=E(2:2,2:2);";


        temp1=engGetVariable(ep,"vsc_s0";
        s0=*(mxGetPr(temp1));
        temp1=engGetVariable(ep,"vsc_s1";
        s1=*(mxGetPr(temp1));
        temp1=engGetVariable(ep,"vsc_s2";
        s2=*(mxGetPr(temp1));   
        temp1=engGetVariable(ep,"vsc_s3";
        s3=*(mxGetPr(temp1));

        printf("vsc_s0=%e\n",s0);
        printf("vsc_s1=%e\n",s1);
        printf("vsc_s2=%e\n",s2);
        printf("vsc_s3=%e\n",s3);

        engClose(ep);
        return 1;
}
回复此楼
已阅   回复此楼   关注TA 给TA发消息 送TA红花 TA的回帖

智能机器人

Robot (super robot)

我们都爱小木虫

相关版块跳转 我要订阅楼主 无知为知 的主题更新
信息提示
请填处理意见