Warning: file_get_contents(/data/phpspider/zhask/data//catemap/6/cplusplus/142.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/matlab/16.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C++ 为什么将数据从MATLAB传递到mex如此缓慢?_C++_Matlab_Matrix_Mex - Fatal编程技术网

C++ 为什么将数据从MATLAB传递到mex如此缓慢?

C++ 为什么将数据从MATLAB传递到mex如此缓慢?,c++,matlab,matrix,mex,C++,Matlab,Matrix,Mex,我创建了这个MEX函数,它接受如下参数: toSolve(域,model.one,model.two,model.three,model.four,bc,model.T,model.dt,[start model.five]) 其中模型是一个MATLAB结构,具有矩阵1,2,3,5,以及具有三个矩阵的1x3单元4 每个矩阵都是巨大的(~500000 x 3)。当我将数据传递到mex函数(即到solve)时,加载需要花费很长时间。在我的mex函数中,第一行是打印输出: void mexFuncti

我创建了这个MEX函数,它接受如下参数:

toSolve(域,model.one,model.two,model.three,model.four,bc,model.T,model.dt,[start model.five])

其中
模型
是一个MATLAB
结构
,具有矩阵
1
2
3
5
,以及具有三个矩阵的1x3单元
4

每个矩阵都是巨大的(~500000 x 3)。当我将数据传递到mex函数(即
到solve
)时,加载需要花费很长时间。在我的mex函数中,第一行是打印输出:

void
mexFunction(int nlhs,mxArray *plhs[],int nrhs,const mxArray *prhs[])
{

/* Start */
mexPrintf("\n About to start");

//CODE//

}

打印即将开始的那一行要花很长时间。代码本身运行得非常快。我不知道为什么要花很长时间才能把数据传给mex?我做错了什么?

可能是您的计算花费了时间,而您没有快速看到打印语句的原因是缓冲区没有被强制刷新(即,实际写入屏幕)。有关更多信息,请参阅

简而言之,如果您添加:

mexEvalString("drawnow;")
mexPrintf
命令之后。如果您看到快速写入屏幕的文本,这将有助于您确认计算是否需要时间,而不是将数据传递到MEX