matlab C程序

26 篇文章 0 订阅

通过把耗时长的函数用c语言实现,并编译成mex函数可以加快执行速度
Matlab本身是不带c语言的编译器的,所以要求你的机器上已经安装有VC,BC或Watcom C中的一种
注:在Matlab里,矩阵第一行是从1开始的

1. 主接口

#include "mex.h" 
void mexFunction(int nlhs, mxArray *plhs[], int nrhs, const mxArray *prhs[]) 
{
    mexPrintf("hello,world!\n"); 
}
//编译
>> mex hello.c
//运行
>> hello

整个程序由一个接口子过程 mexFunction构成
nlhs:输出参数数目
plhs:指向输出参数的指针
nrhs:输入参数数目
prhs:输入参数

2. mxGetScalar

i = mxGetScalar(prhs[0]);
“Scalar”就是标量的意思。在Matlab里数据都是以数组的形式存在的,mxGetScalar的作用就是把通过prhs[0]传递进来的mxArray类型的指针指向的数据(标量)赋给C程序里的变量。这个变量本来应该是double类型的,通过强制类型转换赋给了整形变量i

3. mxGetPr

从指向mxArray类型数据的prhs[0]获得了指向double类型的指针
mxGetPr只能得到指向这个矩阵的指针,如果我们不知道这个矩阵的确切大小,就没法对它进行计算

4. mxGetM和mxGetN

获得传进来参数的行数和列数

5. mxCreateDoubleMatrix

mxArray *mxCreateDoubleMatrix(int m, int n, mxComplexity ComplexFlag)
内存申请
m:待申请矩阵的行数
n:待申请矩阵的列数

6. mexErrMsgTxt

MexErrMsgTxt在给出出错提示的同时退出当前程序的运行

7. MxIsDouble

MxIsDouble则用于判断mxArray中的数据是否double类型

参考文档:http://www.cnblogs.com/tjulxh/archive/2012/04/23/2467087.html

  • 1
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值