MATLAB调用c语言时候 怎么添加头文件?

MATLAB调用c语言时候 怎么添加头文件?,第1张

MATLAB调用C语言是不需要增加头文件的。

例如你有一个 new.c 需要被matlab调用,则如下 *** 作:

把new.c放在MATLAB当前目录中,在MATLAB中输入mex new.c。然后matlab会生成编译文件new.mexW32。你就可以直接在matlab中调用new.c里的函数了。当然c文件里面的函数格式必须按照matlab的要求来。

a=textread('data.txt','%*s%*s%f%*s','headerlines',3,'delimiter',' ')

save ok.txt a -ascii

首先headerlines是文件头有多少行

delimiter就是词跟词之间的分隔符。

'%*s%*s%f%*s'这个比较麻烦一些。

首先%s是字符串的意思,%f是浮点数的意思

而在它们中间加上*,表示跳过这个词。

%*s%*s的意思就是跳过前两个词。

先看一个简单的程序(该程序保存在matlab主目录下名字是mexDemon.cpp,或者在主目录下新建一个.cpp文件):

#include "mex.h"

//加入头文件,该头文件在VS2010中无法include,但是不影响其在matlab中的编译,反而在matlab编译还需要include它

#include <vector>

using namespace std

void mexFunction(int nlhs, mxArray *plhs[],int nrhs,const mxArray *prhs[])

//mexFunction就类似于main函数

{

//nlhs代表的是输出参数的个数

//plhs是一个指针数组,里面的指针指向mxArray类型,每一个指针指向一个输出

//nrhs代表的是输入参数的个数

//prhs是一个指针数组,里面的指针指向mxArray类型,每一个指针指向一个输入

vector<vector<double>>array2d

double *z

plhs[0] = mxCreateDoubleMatrix( 5, 6, mxREAL)//第一个输出是一个5*6的矩阵

z = mxGetPr(plhs[0])//获得矩阵的第一个元素的指针

array2d.resize(5)

int ii = 0

for(int i = 0i <5i++){

for(int j = 0j <6j++){

z[i*6 + j] = ii//指针访问矩阵是列优先的,请自己循环程序和分析输出结果

ii++

}

}

}

/*

*ans =

0 510152025

1 611162126

2 712172227

3 813182328

4 914192429

*/

然后对Matlab编译应用程序mex的编译器进行设置,在命令窗口输入 Mex –setup。

跟着步骤走选择合适的编译器即可。


欢迎分享,转载请注明来源:内存溢出

原文地址:https://54852.com/bake/7920394.html

(0)
打赏 微信扫一扫微信扫一扫 支付宝扫一扫支付宝扫一扫
上一篇 2023-04-11
下一篇2023-04-11

发表评论

登录后才能评论

评论列表(0条)

    保存