当前位置: 首页 > 知识库问答 >
问题:

用VS2010和MATLAB2007A从C++调用matlab

柳鸿博
2023-03-14

我试图用下面的代码从C++调用matlab。我通过engEvalString从C++中发送matlab命令,我想从matlab中获得输出,但是我得到了这个错误:

EngineTest.exe中0x78531986处的未处理异常:0xC0000005:读取位置0x00000024的访问冲突。

发动机*EP;

  if (!(ep = engOpen("\0"))) {
  fprintf(stderr, "\nCan't start MATLAB engine\n");
  return EXIT_FAILURE;

}

双AN[1],AW_Net[1],AQoS[1],ASecurity[1],ACOST[1],AUSERR[1],ARSS[1],ABW[1],ANQoS[1],ACoverage[1];double Autil[1],Adelay[1],Aber[1],Apacketloss[1],Anetworkp[1],Acomp[1],Adist[1],Abattery[1],Avelocity[1];双adeviceCond[1],ar_time[1],anon_r_time[1],aapptype[1],atarget[1];

userr=mxcreatedoublematrix(1,1,mxREAL);memcpy(void*)mxGetPr(userR),(void*)auserR,sizeof(double)*1);engPutVariable(ep,“auserr”,userR);

RSS=mxcreatedoublematrix(1,1,mxREAL);memcpy((void*)mxGetPr(RSS),(void*)aRSS,sizeof(double)*1);engPutVariable(ep,“ARSS”,RSS);

BW=mxcreatedoublematrix(1,1,mxREAL);memcpy((void*)mxGetPr(BW),(void*)aBW,sizeof(double)*1);engPutVariable(ep,“ABW”,BW);

coverage=mxcreatedoublematrix(1,1,mxREAL);memcpy((void*)mxGetPr(覆盖范围),(void*)面积,大小(双)*1);engPutVariable(ep,“acoverage”,覆盖范围);

util=mxcreatedoublematrix(1,1,mxREAL);memcpy(void*)mxGetPr(Util),(void*)aUtil,sizeof(double)*1);engPutVariable(ep,“AUTIL”,Util);

delay=mxcreatedoublematrix(1,1,mxREAL);memcpy((void*)mxGetPr(延迟),(void*)adelay,sizeof(double)*1);engPutVariable(ep,“adealy”,延迟);

BER=mxcreatedoublematrix(1,1,mxREAL);memcpy((void*)mxGetPr(BER),(void*)aBER,sizeof(double)*1);engPutVariable(ep,“Aber”,BER);

packetloss=mxcreatedoublematrix(1,1,mxREAL);memcpy((void*)mxGetPr(PacketLoss),(void*)aPacketLoss,sizeof(double)*1);engPutVariable(ep,“apacketloss”,PacketLoss);

networkp=mxcreatedoublematrix(1,1,mxREAL);memcpy((void*)mxGetPr(NetworkP),(void*)aNetworkP,sizeof(double)*1);engPutVariable(ep,“anetworkp”,NetworkP);

comp=mxcreatedoublematrix(1,1,mxREAL);memcpy((void*)mxGetPr(comp),(void*)acomp,sizeof(double)*1);engPutVariable(ep、“ACOMP”、comp);

dist=mxcreatedoublematrix(1,1,mxREAL);memcpy((void*)mxGetPr(dist),(void*)adist,sizeof(double)*1);engPutVariable(ep,“Adist”,dist);

电池=mxcreatedoublematrix(1,1,mxREAL);memcpy((void*)mxGetPr(电池),(void*)abattery,尺寸(双)*1);engPutVariable(ep,“Abattery”,电池);

速度=mxcreatedoublematrix(1,1,mxREAL);memcpy((void*)mxGetPr(velocity),(void*)avelocity,sizeof(double)*1);engPutVariable(ep,“avelocity”,速度);

devicecond=mxCreateDoubleMatrix(1,1,mxREAL);memcpy((void*)mxGetPr(devicecond),(void*)adevicecond,sizeof(double)*1);engPutVariable(ep,“AdeviceCond”,devicecond);

R_time=mxcreatedoublematrix(1,1,mxREAL);memcpy((void*)mxGetPr(R_time),(void*)aR_time,sizeof(double)*1);engPutVariable(ep,“ar_time”,R_time);

Non_R_time=mxcreatedoublematrix(1,1,mxREAL);memcpy((void*)mxGetPr(Non_R_time),(void*)aNon_R_time,sizeof(double)*1);engPutVariable(ep,“anon_r_time”,Non_R_time);

AppType=mxcreatedoublematrix(1,1,mxREAL);memcpy((void*)mxGetPr(AppType),(void*)aAppType,sizeof(double)*1);engPutVariable(ep,“AAppType”,AppType);

target=mxcreatedoublematrix(1,1,mxREAL);memcpy((void*)mxGetPr(target),(void*)atarget,sizeof(double)*1);engPutVariable(ep,“atarget”,target);

  engEvalString(ep, " dag = zeros(N,N);");

engEvalString(ep,“dag(w_net,[安全包丢失BER电池QoS成本延迟>BW RSS覆盖R_time Non_R_time])=1;”);engEvalString(ep,“dag([QoS安全成本],userR)=1;”);engEvalString(ep,“dag([delay BER Packetlos],NQoS)=1;”);engEvalString(ep,“dag([BW RSS覆盖NQoS Util],NetworkP)=1;”);engEvalString(ep,“dag([电池速度],devicecond)=1;”);engEvalString(ep,“dag([R_time Non_R_time],AppType)=1;”);engEvalString(ep,“dag([userR NetworkP devicecond AppType],target)=1;”);engEvalString(ep,“discrete_nodes=[1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23];”);engEvalString(ep,“node_sizes=[3 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2];”);engEvalString(ep,“onodes=[];”);engEvalString(ep,“bnet=mk_bnet(dag,node_sizes,'names',{'w_net'、'QoS'、'security'、'coste'、'user

engEvalString(ep,“CPT_w_net=zeros(3,1);”);engEvalString(ep,“CPT_w_net(1)=0.3;CPT_w_net(2)=0.2;CPT_w_net(3)=0.5;”);

engEvalString(ep,“CPT_cost=zeros(3,2);”);engEvalString(ep,“CPT_cost(1,1)=0.2;CPT_cost(1,2)=0.8;”);engEvalString(ep,“CPT_cost(2,1)=0.4;CPT_cost(2,2)=0.6;”);engEvalString(ep,“CPT_cost(3,1)=0.6;CPT_cost(3,2)=0.4;”);

engEvalString(ep,“CPT_QoS=zeros(3,2);”);engEvalString(ep,“CPT_QoS(1,1)=0.2;CPT_QoS(1,2)=0.8;”);engEvalString(ep,“CPT_QoS(2,1)=0.4;CPT_QoS(2,2)=0.6;”);engEvalString(ep,“CPT_QoS(3,1)=0.8;CPT_QoS(3,2)=0.2;”);

engEvalString(ep,“CPT_security=zeros(3,2);”);engEvalString(ep,“CPT_security(1,1)=0.2;CPT_security(1,2)=0.8;”);engEvalString(ep,“CPT_security(2,1)=0.6;CPT_security(2,2)=0.4;”);engEvalString(ep,“CPT_security(3,1)=0.7;CPT_security(3,2)=0.3;”);

engEvalString(ep,“CPT_userR=zeros(2,2,2,2);”);engEvalString(ep,“CPT_userR(1,1,1,1)=0.9;CPT_userR(1,1,1,2)=0.8;”);engEvalString(ep,“CPT_userR(1,1,2,1)=0.1;CPT_userR(1,1,2,2)=0.2;”);engEvalString(ep,“CPT_userR(1,2,1,1)=0.8;CPT_userR(1,2,1,2)=0.4;”);engEvalString(ep,“CPT_userR(1,2,2,1)=0.2;CPT_userR(1,2,2,2)=0.6;”);engEvalString(ep,“CPT_userR(2,1,1,1)=0.8;CPT_userR(2,1,1,2)=0.4;”);engEvalString(ep,“CPT_userR(2,1,2,1)=0.2;CPT_userR(2,1,2,2)=0.6;”);engEvalString(ep,“CPT_userR(2,2,1,1)=0.4;CPT_userR(2,2,1,2)=0.1;”);engEvalString(ep,“CPT_userR(2,2,2,1)=0.6;CPT_userR(2,2,2,2)=0.9;”);

engEvalString(ep,“CPT_BER=zeros(3,2);”);engEvalString(ep,“CPT_BER(1,1)=0.6;CPT_BER(1,2)=0.4;”);engEvalString(ep,“CPT_BER(2,1)=0.5;CPT_BER(2,2)=0.5;”);engEvalString(ep,“CPT_BER(3,1)=0.3;CPT_BER(3,2)=0.7;”);

engEvalString(ep,“CPT_PacketLoss=zeros(3,2);”);engEvalString(ep,“CPT_PacketLoss(1,1)=0.6;CPT_PacketLoss(1,2)=0.4;”);engEvalString(ep,“CPT_PacketLoss(2,1)=0.5;CPT_PacketLoss(2,2)=0.5;”);engEvalString(ep,“CPT_PacketLoss(3,1)=0.4;CPT_PacketLoss(3,2)=0.6;”);

engEvalString(ep,“CPT_delay=zeros(3,2);”);engEvalString(ep,“CPT_delay(1,1)=0.7;CPT_delay(1,2)=0.3;”);engEvalString(ep,“CPT_delay(2,1)=0.5;CPT_delay(2,2)=0.5;”);engEvalString(ep,“CPT_delay(3,1)=0.3;CPT_delay(3,2)=0.7;”);

engEvalString(ep,“CPT_NQoS=zeros(2,2,2,2);”);engEvalString(ep,“CPT_NQoS(1,1,1,1)=0.1;CPT_NQoS(1,1,1,2)=0.2;”);engEvalString(ep,“CPT_NQoS(1,1,2,1)=0.9;CPT_NQoS(1,1,2,2)=0.8;”);engEvalString(ep,“CPT_NQoS(1,2,1,1)=0.2;CPT_NQoS(1,2,1,2)=0.4;”);engEvalString(ep,“CPT_NQoS(1,2,2,1)=0.8;CPT_NQoS(1,2,2,2)=0.6;”);engEvalString(ep,“CPT_NQoS(2,1,1)=0.2;CPT_NQoS(2,1,1,2)=0.4;”);engEvalString(ep,“CPT_NQoS(2,1,2,1)=0.8;CPT_NQoS(2,1,2,2)=0.6;”);engEvalString(ep,“CPT_NQoS(2,2,1,1)=0.4;CPT_NQoS(2,2,1,2)=0.8;”);engEvalString(ep,“CPT_NQoS(2,2,2,1)=0.6;CPT_NQoS(2,2,2,2)=0.2;”);

engEvalString(ep,“CPT_BW=0(3,2);CPT_BW(1,1)=0.3;CPT_BW(1,2)=0.7;CPT_BW(2,1)=0.6;CPT_BW(2,2)=0.4;CPT_BW(3,1)=0.4;CPT_BW(3,2)=0.6;”);

engEvalString(ep,“CPT_RSS=0(3,2);CPT_RSS(1,1)=0.6;CPT_RSS(1,2)=0.4;CPT_RSS(2,1)=0.6;CPT_RSS(2,2)=0.4;CPT_RSS(3,1)=0.5;CPT_RSS(3,2)=0.5;”);

engEvalString(ep,“CPT_covery=0(3,2);CPT_covery(1,1)=0.3;CPT_covery(1,2)=0.7;CPT_covery(2,1)=0.7;CPT_covery(2,2)=0.3;CPT_covery(3,1)=0.9;CPT_covery(3,2)=0.1;”);

engEvalString(ep,“CPT_Util=zeros(2,1);CPT_Util(1)=0.5;CPT_Util(2)=0.5;”);

engEvalString(ep,“CPT_NetworkP=零(2,2,2,2,2,2);CPT_NetworkP(1,1,1,1,1,1)=0.9;CPT_NetworkP(1,1,1,1,1,2)=0.8;CPT_NetworkP(1,1,1,2,1)=0.1;CPT_NetworkP(1,1,1,2,2)=0.2;”);

engEvalString(ep,“CPT_NetworkP(1,1,1,2,1,1)=0.8;CPT_NetworkP(1,1,1,2,1,2)=0.7;CPT_NetworkP(1,1,1,2,1,2)=0.2;CPT_NetworkP(1,1,2,2,2)=0.3;CPT_NetworkP(1,1,2,1,1)=0.8;CPT_NetworkP(1,1,2,1,1)=0.8;”

engEvalString(ep,“CPT_NetworkP(1,1,2,1,2,1)=0.2;CPT_NetworkP(1,1,2,1,2,2)=0.2;CPT_NetworkP(1,1,2,2,1,1)=0.7;CPT_NetworkP(1,1,2,2,1,2)=0.5;CPT_NetworkP(1,1,2,2,2,2)=0.3;CPT_NetworkP(1,1,2,2,2,2)=0.5;”);

engEvalString(ep,“CPT_NetworkP(1,2,1,1,1,1,1)=0.8;CPT_NetworkP(1,2,1,1,1,2)=0.7;CPT_NetworkP(1,2,1,1,2,1)=0.2;CPT_NetworkP(1,2,1,2,2)=0.3;CPT_NetworkP(1,2,1,1,1)=0.7;CPT_NetworkP(1,2,1,1,2)=0.5;”);

engEvalString(ep,“CPT_NetworkP(1,2,1,2,2,1)=0.3;CPT_NetworkP(1,2,1,2,2,2)=0.5;CPT_NetworkP(1,2,2,1,1,1)=0.7;CPT_NetworkP(1,2,2,1,1,2)=0.6;CPT_NetworkP(1,2,2,1,2,1)=0.3;CPT_NetworkP(1,2,2,1,2)=0.4;”);

engEvalString(ep,“CPT_NetworkP(1,2,2,2,1,1)=0.4;CPT_NetworkP(1,2,2,2,1,2)=0.3;CPT_NetworkP(1,2,2,2,1)=0.6;CPT_NetworkP(1,2,2,2,2)=0.7;”);

engEvalString(ep,“CPT_NetworkP(2,1,1,1,1,1)=0.8;CPT_NetworkP(2,1,1,1,1,2)=0.6;CPT_NetworkP(2,1,1,1,2,1)=0.2;CPT_NetworkP(2,1,1,1,2,2)=0.4;CPT_NetworkP(2,1,1,1,1)=0.7;CPT_NetworkP(2,1,1,1,2)=0.5;”);

engEvalString(ep,“CPT_NetworkP(2,1,1,2,2,1)=0.3;CPT_NetworkP(2,1,1,2,2,2)=0.5;CPT_NetworkP(2,1,2,1,1,1)=0.5;CPT_NetworkP(2,1,2,1,2,2)=0.5;CPT_NetworkP(2,1,2,2,2)=0.5;”);engEvalString(ep,“CPT_NetworkP(2,1,2,2,1,1)=0.4;CPT_NetworkP(2,1,2,2,1,2)=0.4;CPT_NetworkP(2,1,2,2,2,2,1)=0.6;CPT_NetworkP(2,2,2,2,2,2,2)=0.6;CPT_NetworkP(2,2,1,1,1)=0.5;CPT_NetworkP(2,2,1,1,1)=0.5;”);engEvalString(ep,“CPT_NetworkP(2,2,1,1,2,1)=0.5;CPT_NetworkP(2,2,1,1,2,2)=0.5;CPT_NetworkP(2,2,1,2,1)=0.4;CPT_NetworkP(2,2,1,2,2,1)=0.3;CPT_NetworkP(2,2,1,2,1)=0.6;CPT_NetworkP(2,2,1,2,2)=0.7;”);engEvalString(ep,“CPT_NetworkP(2,2,2,1,1,1)=0.4;CPT_NetworkP(2,2,2,1,1,2)=0.2;CPT_NetworkP(2,2,2,1,2,1)=0.6;CPT_NetworkP(2,2,2,2,1,1)=0.8;CPT_NetworkP(2,2,2,1,1)=0.3;CPT_NetworkP(2,2,2,1,2)=0.1;”);engEvalString(ep,“CPT_NetworkP(2,2,2,2,2,2,1)=0.7;CPT_NetworkP(2,2,2,2,2,2,2)=0.9;”);

engEvalString(ep,“CPT_battery=zeros(3,2);”);engEvalString(ep,“CPT_battery(1,1)=0.4;CPT_battery(1,2)=0.6;”);engEvalString(ep,“CPT_battery(2,1)=0.3;CPT_battery(2,2)=0.7;”);engEvalString(ep,“CPT_battery(3,1)=0.8;CPT_battery(3,2)=0.2;”);

engEvalString(ep,“CPT_velocity=zeros(2,1);”);engEvalString(ep,“CPT_velocity(1)=0.5;CPT_velocity(2)=0.5;”);

engEvalString(ep,“CPT_dist=zeros(2,1);”);engEvalString(ep,“CPT_dist(1)=0.5;CPT_dist(2)=0.5;”);

engEvalString(ep,“CPT_comp=zeros(2,1);”);engEvalString(ep,“CPT_comp(1)=0.5;CPT_comp(2)=0.5;”);

engEvalString(ep,“CPT_velocity=zeros(2,1);”);engEvalString(ep,“CPT_velocity(1)=0.5;CPT_velocity(2)=0.5;”);

engEvalString(ep,“CPT_Non_R_time=zeros(3,2);”);engEvalString(ep,“CPT_Non_R_time(1,1)=0.4;CPT_Non_R_time(1,2)=0.6;CPT_Non_R_time(2,1)=0.3;CPT_Non_R_time(2,2)=0.7;CPT_Non_R_time(3,1)=0.3;CPT_Non_R_time(3,2)=0.7;”);

engEvalString(ep,“CPT_AppType=zeros(2,2,2);”);engEvalString(ep,“CPT_AppType(1,1,1)=0.2;CPT_AppType(1,1,2)=0.4;CPT_AppType(1,1,2)=0.8;CPT_AppType(1,2,2)=0.6;CPT_AppType(2,1,1)=0.4;CPT_AppType(2,1,2)=0.8;”);engEvalString(ep,“CPT_AppType(2,2,1)=0.6;CPT_AppType(2,2,2)=0.2;”);

engEvalString(ep,“CPT_target=zeros(2,2,2,2,2);”);engEvalString(ep,“CPT_target(1,1,1,1,1)=0.2;CPT_target(1,1,1,1,2)=0.6;CPT_target(1,1,1,2,1)=0.8;CPT_target(1,1,2,1)=0.4;CPT_target(1,1,2,1,1)=0.3;CPT_target(1,1,2,1,2)=0.5;”);engEvalString(ep,“CPT_target(1,1,2,2,1)=0.7;CPT_target(1,1,2,2,2)=0.5;CPT_target(1,2,1,1)=0.3;CPT_target(1,2,1,1,2)=0.7;CPT_target(1,2,1,2,1)=0.3;”);engEvalString(ep,“CPT_target(1,2,2,1,1)=0.4;CPT_target(1,2,2,1,2)=0.2;CPT_target(1,2,2,1)=0.6;CPT_target(1,2,2,2)=0.8;”);

engEvalString(ep,“CPT_target(2,1,1,1)=0.2;CPT_target(2,1,1,1,2)=0.3;CPT_target(2,1,1,2,1)=0.8;CPT_target(2,1,1,2,2)=0.7;CPT_target(2,1,2,1,1)=0.2;CPT_target(2,1,2,1,2)=0.1;”);engEvalString(ep,“CPT_target(2,1,2,2,1)=0.8;CPT_target(2,1,2,2,2,2)=0.9;CPT_target(2,2,1,1)=0.5;CPT_target(2,2,1,1,2)=0.5;CPT_target(2,2,2,2,2)=0.5;CPT_target(2,2,2,2,2)=0.5;”);engEvalString(ep,“CPT_target(2,2,2,1,1)=0.4;CPT_target(2,2,2,1,2)=0.6;CPT_target(2,2,2,2,1)=0.6;CPT_target(2,2,2,2,2)=0.4;”);engEvalString(ep,“bnet.cpd{w_net}=tabular_CPD(bnet,w_net,CPT_w_net);”);engEvalString(ep,“bnet.cpd{QoS}=tabular_CPD(bnet,QoS,CPT_QoS);”);engEvalString(ep,“bnet.cpd{security}=tabular_CPD(bnet,security,CPT_security);”);engEvalString(ep,“bnet.cpd{cost}=tabular_CPD(bnet,cost,CPT_cost);”);engEvalString(ep,“bnet.cpd{userR}=tabular_CPD(bnet,userR,CPT_userR;”);engEvalString(ep,“bnet.cpd{RSS}=tabular_CPD(bnet,RSS,CPT_RSS);”);
engEvalString(ep,“bnet.cpd{BW}=tabular_CPD(bnet,BW,CPT_BW);engEvalString(ep,“bnet.cpd{NQoS}=tabular_CPD(bnet,NQoS,CPT_NQoS);”);engEvalString(ep,“bnet.cpd{coverage}=tabular_CPD(bnet,coverage,CPT_coverage);”);engEvalString(ep,“bnet.cpd{Util}=tabular_CPD(bnet,Util,CPT_Util;”);engEvalString(ep,“bnet.cpd{delay}=tabular_CPD(bnet,delay,CPT_delay);”);engEvalString(ep,“bnet.cpd{BER}=tabular_CPD(bnet,BER,CPT_BER);”);engEvalString(ep,“bnet.cpd{PacketLoss}=tabular_CPD(bnet,PacketLoss,CPT_PacketLoss);”);engEvalString(ep,“bnet.cpd{NetworkP}=tabular_CPD(bnet,NetworkP,CPT_NetworkP;”);engEvalString(ep,“bnet.cpd{comp}=tabular_CPD(bnet,comp,CPT_comp;”);engEvalString(ep,“bnet.cpd{dist}=tabular_CPD(bnet,dist,CPT_dist);”>engEvalString(ep,“bnet.cpd{battery}=tabular_CPD(bnet,battery,CPT_battery);”engEvalString(ep,“bnet.cpd{battery}=tabular_CPD(bnet,battery,CPT_battery);”engEvalString(ep,“bnet.cpd{velocity}=tabular_CPD(bnet,velocity,CPT_R_time);”);engEvalString(ep,“bnet.cpd{Non_R_time}=tabular_CPD(bnet,Non_R_time,CPT_Non_R_time);”;engEvalString(ep,“bnet.cpd{target}=tabular_CPD(bnet,target,CPT_target);”engEvalString(ep,“bnet.cpd{AppType}=tabular_CPD(bnet,AppType,CPT_AppType);”

engEvalString(ep,“engine=jtree_inf_engine(bnet);”);engEvalString(ep,“证据=单元格(1,N);”);

engEvalString(ep,“[engine,loglik]=enter_extention(engine,extention);”);engEvalString(ep,“marg=marginal_nodes(engine,w_net);”);

双囊;mxArray*mResult;engEvalString(ep,“z=marg.t(1);”);mresult=engGetVariable(ep,“z”);cresult=mxGetPr(mresult);

  engClose(ep);

共有1个答案

空谦
2023-03-14

这可能是很晚的答复,但我的这个示例代码可能会帮助你。

#include<iostream>
#include<math.h>
#include<engine.h>
#pragma comment (lib, "libmat.lib")
#pragma comment (lib, "libmx.lib")
#pragma comment (lib, "libmex.lib")
#pragma comment (lib, "libeng.lib")
using namespace std;

const int N = 9;                //Number of grid points


int main()
{
    // start matlab engine
    Engine *ep = engOpen(NULL);     
    if (!(ep = engOpen(""))) {      
        fprintf(stderr, "\nCan't start MATLAB engine\n");
        return EXIT_FAILURE;
    }

    int i, j;
// Grid creation with aspect ratio r
    double sum_r = 0, r = 1;
    for (i = 0; i < N-1; i++){
        sum_r += pow(r,i);
    }
    double dx0 = 1 / sum_r;         // calculate first dx
    double dy0 = 1 / sum_r;         // calculate first dy

    double x[N][N], y[N][N];        //define grid variable
    double dx, dy;

    for (j = 0; j < N; j++){
        x[0][j] = 0; x[1][j] = dx0;
        y[0][j] = 0; y[1][j] = dy0;
        for (i = 2; i < N; i++){
            dx = x[i - 1][j] - x[i - 2][j];
            dy = y[i - 1][j] - y[i - 2][j];
            x[i][j] = x[i - 1][j] + r*dx;
            y[i][j] = y[i - 1][j] + r*dy;
        }
    }

    mxArray *x_matlab = mxCreateDoubleMatrix(N, N, mxREAL);
    double *pa = mxGetPr(x_matlab);

    memcpy(pa, *x, N*sizeof(double)*N);
    engPutVariable(ep, "x", x_matlab);
    engEvalString(ep, "x = x';");

    double* ans = NULL;
    mxArray *result = NULL;
    result = engGetVariable(ep, "x");
    mwSize nRow = mxGetM(result);
    mwSize nCol = mxGetN(result);
    ans = mxGetPr(result);

    for (int j = 0; j < N; j++){
        for (int i = 0; i < N; i++){
            y[i][j] = ans[i * N + j];
        }
        cout << endl;
    }

    system("pause");
    mxDestroyArray(x_matlab);
    engClose(ep);
    return 0;

}
 类似资料:
  • 问题内容: 构建与C或C ++库的Python绑定的最快方法是什么? (如果这很重要,我正在使用Windows。) 问题答案: Boost Python库是用于连接Python和C 的框架。它使您可以快速而无缝地将C 类的函数和对象暴露给Python,反之亦然,而无需使用特殊工具-仅使用C 编译器即可。它被设计为以非介入方式包装C 接口,因此您不必为了包装而完全更改C ++代码,从而使Boost.

  • 主要内容:1) 创建项目(Project),2) 添加源文件,3) 编写代码并生成程序,4) 总结提示:VS2010 可以在 XP、Win7 和 Win8 下完美运行,但在 Win10 下 可能会有兼容性问题,使用 Win10 的读者建议安装 VS2015 或者 VS2017。 前面我们给出了一段完整的C语言代码,就是在显示器上输出“小牛知识库”,如下所示: 本节我们就来看看如何通过 VS2010 来运行这段代码。 1) 创建项目(Project) 在 VS2010 下开发程序首先要创建项目,

  • 问题内容: 我正在将Java用于小型应用程序。这是对现有MFC项目的重写。我需要更改一个现有的dll,以启用使用JNI从Java进行的访问。所有这些Java知识对我来说都是新手,因此当我阅读其他论坛帖子时遇到了一些麻烦,并且感觉比较密集。在现有的dll中,我具有如下功能: 愚蠢的提问时间。如何正确设置它以被Java调用? 我尝试了这个: 我包括jni.h,一切编译正常。但是,当我从Java调用它时

  • 问题内容: 我正在开发Python / ObjC应用程序,需要从ObjC的Python类中调用一些方法。我已经尝试了几种方法,但都没有成功。 如何从Objective-C调用Python方法? 我的Python类正在Interface Builder中实例化。如何从该实例调用方法? 问题答案: 使用PyObjC。 它包含在Leopard及更高版本中。 它甚至可以与iPython一起使用: ` 要从

  • 问题内容: 我有一个C函数,我想从C 调用。我无法使用“ ”这样的方法,因为C函数无法使用g 进行编译。但是使用gcc可以很好地编译。有什么想法如何从C ++调用函数吗? 问题答案: 像这样编译C代码: 然后是这样的C ++代码: 然后使用C ++链接器将它们链接在一起: 当您包含C函数的声明时,还必须告诉C ++编译器C头即将到来。因此开始于: 应该包含以下内容: (在此示例中,我使用了gcc,

  • 问题内容: 我正在尝试创建一个用Go语言编写的静态对象,以与C程序(例如内核模块等)进行接口。 我已经找到了有关从Go调用C函数的文档,但是关于如何走另一条路却找不到很多。我发现这是可能的,但很复杂。 这是我发现的: 有关C和Go之间的回调的博客文章 CGO文档 Golang邮件列表帖子 有任何人对此有经验吗?简而言之,我正在尝试创建一个完全用Go编写的PAM模块。 问题答案: 您可以从C调用Go