将matlab的m文件转成C语言

实验平台

1.  MicroSoft Visual Studio 2010
2.  matlab2012a

实用链接
百度经验:matlab coder的使用方法

流程

  • matlab command window 输入mex -setup,选择编译环境
  • 在当前工作文件夹下建立myfun.m,输入coder,新建工程fun.prjtype为mex,C,and C++ code generation,点击OK
  • add files myfun.m ,定义输入(if exists)变量的类型,,在bulid中将输出类型选择为C/C++ Static Library,勾选Generate code only
  • 点击build按钮
  • 如果在某个C的工程中需要添加工程,需要将matlab的工作空间中的myfun.hmyfun.crtwtypes.hfoo_types.hrt_nonfinite.h拷贝到当前C语言的工程文件夹中,并添加到工程中
  • 如果在某个文件中需要调用该函数,则需要在添加头文件#myfun.h,即可在文件中调用该函数

可能遇到的问题以及其他方面

  • 在调用的过程中如果遇到找不到变量或者函数定义的问题,则需要一步步找到缺失的头文件(在matla中coder输入的文件夹中寻找),并拷贝、添加到工程中,或者可以直接将生成的所有c和h文件拷贝添加到项目中(一般都会缺少=。=)
  • 如果需要转化为C++,可以在build选项卡里点击more settings,选择输出C++程序
  • 在调用函数时需要看函数是什么类型的,有时候会将输出也写进函数里,比如说地址(矩阵时常用)传递时
  • 关于矩阵的运算转化成C语言需要注意:在调用时尽量用矩阵的首地址作为输入输出变量

let me show you the code

%myfun.m
%这是加法计算,可以在build选项卡里将其设置为3 X 3矩阵相加
function y = myfun(a , b)
    y = a + b;
end

对应的C语言中定义与调用如下:

#include "myfun.h"
//这里作为示例,只是随便输出一个运算后的变量作为检测
//...(your function and other things to do)
double a[3][3] = {1};
double b[3][3] = {2};
double c[3][3] = {0};
array2C(*a,*b,*c);
printf("%lf\n" , c[0][0]);
  • 3
    点赞
  • 55
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 1
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

littletomatodonkey

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值