matlab C程序

通过把耗时长的函数用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

posted @   thomas_blog  阅读(191)  评论(0编辑  收藏  举报
编辑推荐:
· Linux系列:如何用heaptrack跟踪.NET程序的非托管内存泄露
· 开发者必知的日志记录最佳实践
· SQL Server 2025 AI相关能力初探
· Linux系列:如何用 C#调用 C方法造成内存泄露
· AI与.NET技术实操系列(二):开始使用ML.NET
阅读排行:
· 被坑几百块钱后,我竟然真的恢复了删除的微信聊天记录!
· 没有Manus邀请码?试试免邀请码的MGX或者开源的OpenManus吧
· 【自荐】一款简洁、开源的在线白板工具 Drawnix
· 园子的第一款AI主题卫衣上架——"HELLO! HOW CAN I ASSIST YOU TODAY
· Docker 太简单,K8s 太复杂?w7panel 让容器管理更轻松!
点击右上角即可分享
微信分享提示