matlab与C混合编程调试-vs2010+matlab2012a

来源:互联网 发布:linux vim 查找字符串 编辑:程序博客网 时间:2024/05/16 09:08

        matlab 对于科学计算来说非常方便易用,但是效率不太高,尤其是一些自己写的未经优化的程序。可以将计算比较耗时的算法用C语言实现然后在matlab下调用,但关键是如何编写和调试。编写还好说,查看一下mex借口函数的用法应该跟编写普通函数差不多,只不过参数需要经过转换,转换时细心点,再加上有点C指针的基本功就能胜任。

       但是调试比较麻烦,之前一直以为是一件十分困难的事情,但是尝试之后才发现很简单

    我们要做的有以下几点

    1. 首先当然是编写一个C函数了(借用一个网上的简单例子)建立一个文件命名为 add.c 将下面的内容复制进去,然后放入一个文件夹,然后将matlab当前路径切换到

        add.c 所在的文件夹

  

// add.c#include "mex.h" // 使用MEX文件必须包含的头文件// 执行具体工作的C函数double add(double x,double y){    return x + y;}// MEX文件接口函数void mexFunction(int nlhs,mxArray *plhs[],int nrhs,const mxArray *prhs[]) {double *a;double b, c;plhs[0] = mxCreateDoubleMatrix(1, 1, mxREAL);a = mxGetPr(plhs[0]);b = *(mxGetPr(prhs[0]));c = *(mxGetPr(prhs[1]));*a = add(b, c);}
 


2.在matlab 命令窗口输入 mex -g add.c -output add    -g 表示编译时加入调试信息,结果会生成add.mexw32.pdb文件如图所示,如果不加-g命令只会生成 add.mexw32文件

3.在打开vs2010 在顶端debug选项下选择attach to process选项进入




找到matlab进程,选择attach.然后自动关闭对话框,在vs中打开前面提到的add.c,然后再需要设置断点的地方设置断点如设置在下图中的位置,断点没有变红,没关系,接着进行。


4.在matlab同目录下写一个test.m文件,内容如下


5.在matlab下点调试按钮然后程序自动就跳到了刚才add.c设断点的地方且断点变红了.接下来就和调试C程序完全一样了。



0 0
原创粉丝点击
热门问题 老师的惩罚 人脸识别 我在镇武司摸鱼那些年 重生之率土为王 我在大康的咸鱼生活 盘龙之生命进化 天生仙种 凡人之先天五行 春回大明朝 姑娘不必设防,我是瞎子 手破了之后肿了怎么办 手指肿了有脓怎么办 宝宝手指红肿有脓怎么办 孩子一听做作业就烦气怎么办 虎皮鹦鹉脚瘸了怎么办 虎皮鹦鹉脚受伤了怎么办 虎皮鹦鹉脚流血了怎么办 虎皮鹦鹉被风扇打到脚怎么办 虎皮鹦鹉脚脱臼了怎么办 孩子作业做得慢怎么办 员工给公司造成损失怎么办 小孩有写不完的作业家长怎么办 一年级孩子作业太粗心怎么办 孩子最近不好好做作业怎么办 工作压力大害怕做不好怎么办 孩子的数算不对怎么办? 孩子计算老是出错怎么办呢 孩子经常计算错误能怎么办 孩子老出现计算错误怎么办 孩子做作业马虎该怎么办 黑笔写错了纸破了怎么办 幼儿园报名写错怎么办名字 中考写错了字怎么办 头发没干想睡觉怎么办 突然天旋地转恶心想吐怎么办 突然天旋地转的浑身出汗怎么办 3岁半不认识数字怎么办 孩子长倒睫毛该怎么办 一年级的孩子口算慢怎么办? 大班社会领域怎么办教学反思 表带活动圈坏了怎么办 手表固针h掉了怎么办 cad图全部倒过来了怎么办 电脑打数字变粗怎么办 wps表格输入数字变乱码怎么办 文档中光标变粗怎么办 wps排序有重复的怎么办 记英语数字老是混怎么办 苹果手机输入法出数字怎么办 word文档复制过来有底色怎么办 表格复制后还再显示复制符号怎么办