vs无法调用matlab engine,关于VS调用matlab的问题,求教大神

该楼层疑似违规已被系统折叠 隐藏此楼查看此楼

double StdDE::EnergyFunction(double *PopVector,bool &bAtSolution)

{

if (!(ep = engOpen(NULL))) //测试是否启动Matlab引擎成功。

{

cout << "Can't start Matlab engine!" << endl;

exit(1);

}

xx = mxCreateDoubleMatrix(1, nDim, mxREAL);

factor = mxCreateDoubleMatrix(1, 1, mxREAL);//修改了

/*double kk = 2;

double * tempNum;

*tempNum = kk;

memcpy(mxGetPr(factor),tempNum, sizeof(double));

engPutVariable(ep, "factor",factor);*/

memcpy(mxGetPr(xx), PopVector, nDim*sizeof(double)); //将数组x复制到mxarray数组xx中。

engPutVariable(ep, "xx",xx); //将mxArray数组xx写入到Matlab工作空间,命名为xx

//cout << "1" << endl;

engEvalString(ep, "cd C:\\Co-saliency\\2.1-subiCoseg\\Co-Saliency-work\\DETrainIVDimCodetection_12\\");

//cout << "2" << endl;

engEvalString(ep, "meanFmeasure = -IVDimCoDetectionTime(xx,1)");

//cout << "3" << endl;

temp = engGetVariable(ep, "meanFmeasure");

//cout << "4" << endl;

double Fmeasure = mxGetScalar(temp);

engEvalString(ep,"clear all");

mxDestroyArray(xx);//修改了

mxDestroyArray(temp);

mxDestroyArray(factor);

engEvalString(ep,"close;");

engClose(ep); //关闭Matlab引擎。//修改了

return Fmeasure;

}

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值