1、生成mex文件两种方式:
MATLAB:mex filename.cpp
C:http://www.cnblogs.com/lukylu/p/4042306.html;
如果有错,就结合此配置方式:http://www.jb51.net/article/34727.htm
2、VS中单步调试mex:
1)将vs生成的mexw文件放到(替换原先的mexw文件)MATLAB代码要调用的地方
2)vs2010-Tools-附加到线程 Attach to process-选择matlab;在源代码Test.cpp里设置断点。
3)运行要调用mexw文件的MATLAB代码
ps:第二次调试之前要在MATLAB命令行用clear filename.mexw64命令释放此文件;
如果MATLAB和vs的项目在相同路径,即vs生成的mexw就是MATLAB调用的那个问卷,则改变CPP文件后重新生成mexw64文件之前也要clear释放,不然会生成失败
3、用新生成的mexw文件替换MATLAB之前调用的mexw文件时,先在MATLAB命令行用clear filename.mexw64命令释放此文件,这样替换的时候就不会出现mexw文件被占用的问题了
4、因为指针空间分配错误,导致越界,从而每次运行MATLAB都出错或直接闪退!!!
5、对于矩阵A,MATLAB按列数,数完一列再数第二列,如下a(3)=8, a(6)=9;
把矩阵 a 传给C的mex函数参数并按照(i,j)坐标索引在MATLAB对应位置的值:
for(i=0;i<h;i++) //i行,h高
for (j=0;j<w;j++) //j列,w宽
mexPrintf("%f,",a[j*h+i]); //按列索引,比如“1”是第1*h+0=3个,而非第0*w+1=1个
在MATLAB命令行输出:
6、作为索引(如点坐标)传入vs的矩阵要先减1,因为c语言索引从0开始,MATLAB所以从1开始。