C++调用Matlab使用engPutVariable有大小限制
我的电脑是i7,32GB内存,matlab是R2014b,C++用的visual studio 2013.
下面的代码,release后直接运行,输出结果是:

可见,double类型的数组在size为268435442x1的时候可以从C++放到matlab中去,但是268435443x1失败了。
在C++开启的matlab窗口中,直接a=ones(268435443,1),却可以创建一个新的数组。

就算是重启了电脑后也是同样的结果。
下面的代码,release后直接运行,输出结果是:

可见,double类型的数组在size为268435442x1的时候可以从C++放到matlab中去,但是268435443x1失败了。
在C++开启的matlab窗口中,直接a=ones(268435443,1),却可以创建一个新的数组。

就算是重启了电脑后也是同样的结果。
#include "engine.h"
int main(int argc, char **argv)
{
//runTest1DPA();
Engine *ep;
ep = engOpen(NULL);
int size = 268435441;//268435442 ok, 268435443 failed
int ink = 1;
int rt = 0;
while (1)
{
size ++;
double *t = new double[size]();
for (int i = 0; i < size; i++)
t[i] = i;
mxArray *mx_values = mxCreateDoubleMatrix(size, 1, mxREAL);
memcpy(mxGetPr(mx_values), t, size * 1 * sizeof(double));
delete t;
int rt = engPutVariable(ep, "t", mx_values);
mxDestroyArray(mx_values);
if (rt==0)
cout << "matrix size = " << size << " succeed" << endl;
else
cout << "matrix size = " << size << " failed" << endl;
}
engClose(ep);
return 0;
}
...全文
相关推荐
c++调用Matlab函数画图
c++调用Matlab函数画图,示例代码,具体过程参照我的博客中的两篇文章
MATLAB调用C++步骤详解及代码演示(个人原创总结)
个人总结的MATLAB调用C++步骤详解及代码演示,很详细地介绍了各个步骤,演示代码为在MATLAB中输入两矩阵,通过调用C++函数来输出该两矩阵之和,0分共享,希望能帮到大家
Matlab调用cpp+opencv库心得
Matlab调用cpp+opencv库心得
MATLAB编译并调用C、C++程序
详细介绍Matlab于C,C++如何进行混合编译。
matlab调用C++ 动态库实例
包含matlab代码和c++代码,C++生成dll,matlab调用dll。


其它技术问题
