VS2010与MATLAB集成(2)-使用DLL方式
一、环境准备
安装VS2010和MATLAB2012a。
二、编写MATLAB函数 在MATLAB中新建一个函数
int test_matlab_norminv(){norminvInitialize();static double P = 0.9;mxArray * mxa_P = mxCreateDoubleMatrix(1, 1, mxREAL);memcpy (mxGetPr(mxa_P), &P, sizeof(double));static double mu = 0;mxArray * mxa_mu = mxCreateDoubleMatrix(1, 1, mxREAL);memcpy (mxGetPr(mxa_mu), &mu, sizeof(double));static double sigma = 1.0;mxArray * mxa_sigma = mxCreateDoubleMatrix(1, 1, mxREAL);memcpy (mxGetPr(mxa_sigma), &sigma, sizeof(double));mxArray * mxa_pcov = mxCreateDoubleMatrix(1, 1, mxREAL);memcpy (mxGetPr(mxa_pcov), &sigma, sizeof(double));mxArray * mxa_alpha = mxCreateDoubleMatrix(1, 1, mxREAL);memcpy (mxGetPr(mxa_alpha), &sigma, sizeof(double));mxArray * mxa_X = mxCreateDoubleMatrix(1, 1, mxREAL);/*mxArray * mxa_XLO = mxCreateDoubleMatrix(1, 1, mxREAL);mxArray * mxa_XUP = mxCreateDoubleMatrix(1, 1, mxREAL);*///bool bRes = mlfNorminv (1, &mxa_X, &mxa_XLO, &mxa_XUP, mxa_P, mxa_mu, mxa_sigma, mxa_sigma, mxa_sigma);bool bRes = mlfNorminv (1, &mxa_X, NULL, NULL, mxa_P, mxa_mu, mxa_sigma, mxa_sigma, mxa_sigma);double res;memcpy (&res, mxGetPr(mxa_X), sizeof(double));mxDestroyArray(mxa_P);mxDestroyArray(mxa_mu);mxDestroyArray(mxa_sigma);norminvTerminate();return 0;}