matlab C程序
阅读原文时间:2023年07月12日阅读:1

通过把耗时长的函数用c语言实现,并编译成mex函数可以加快执行速度

Matlab本身是不带c语言的编译器的,所以要求你的机器上已经安装有VC,BC或Watcom C中的一种

注:在Matlab里,矩阵第一行是从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:输入参数

i = mxGetScalar(prhs[0]);

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

从指向mxArray类型数据的prhs[0]获得了指向double类型的指针

mxGetPr只能得到指向这个矩阵的指针,如果我们不知道这个矩阵的确切大小,就没法对它进行计算

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

mxArray *mxCreateDoubleMatrix(int m, int n, mxComplexity ComplexFlag)

内存申请

m:待申请矩阵的行数

n:待申请矩阵的列数

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

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

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

手机扫一扫

移动阅读更方便

阿里云服务器
腾讯云服务器
七牛云服务器

你可能感兴趣的文章