MATLAB调用C总结

11 篇文章 0 订阅

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开始。

评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值