MATLAB中调用C语言函数

文章目录

      • 1.测试效果
      • 2.matlab调用c函数资料

1.测试效果

第一个例子

MATLAB官网调用C函数:https://ww2.mathworks.cn/help/matlab/matlab_external/install-mingw-support-package.html?searchHighlight=MinGW-w64 Compiler&s_tid=doc_srchtitle
1您可以通过编译 yprime.c 示例来测试 MinGW® 编译器。将源文件复制到可写文件夹。 copyfile(fullfile(matlabroot,‘extern’,‘examples’,‘mex’,‘yprime.c’),’.’,‘f’)
2 如果您在系统中仅安装了 MinGW 编译器,则 mex 命令会自动选择 MinGW。继续下一步。但如果您有多个 C 或 C++ 编译器,请使用 mex -setup 选择 MinGW。
mex -setup
3 编译该 MEX 文件。
mex yprime.c
4 MATLAB 将显示“编译工具”消息,其中显示了用于编译 MEX 文件的编译器。
运行函数。
yprime(1,1:4)
MATLAB中调用C语言函数_第1张图片
第二个例子
参考MATLAB学习(五)MATLAB中调用C语言函数
1 在matlab中新建文件

#include "mex.h"    //头文件必须包含mex.h
double mexSimpleDemo(double *y,double a,double b);           //C语言算法程序声明,在最后调用时,第一
                //                 个参数是返回结果
//c语言到matlab变换,以mexFunction命名
void mexFunction(int nlhs,mxArray *plhs[],int nrhs,const mxArray *prhs[])
{
    double *y;
    double m,n;
    
    //获取输入变量的数值大小
    m=mxGetScalar(prhs[0]);
    n=mxGetScalar(prhs[1]);
    //获取输出变量的指针
    plhs[0]=mxCreateDoubleMatrix(1,1,mxREAL);
    y=mxGetPr(plhs[0]);
     
    //调用子函数
    mexSimpleDemo(y,m,n);

}

//C语言函数  
double mexSimpleDemo(double *y,double a,double b)
{
    return *y=(a>b)?a:b;

}

保存为mexSimpleDemo.c的文件
2 在matlab中输入
mex mexSimpleDemo.c
3 测试调用结果在matlab输入
a=mexSimpleDemo(5,3)
MATLAB中调用C语言函数_第2张图片

2.matlab调用c函数资料

下载资料:https://download.csdn.net/download/weixin_39249915/11293038

你可能感兴趣的:(matlab)