C语言调用matlab函数

各位大神,我想在C语言下调用matlab的一个函数,但是我不想用dll生成的动态链接库,有没有办法让matlab生成C的源代码,我想直接用源代码,谢谢!答得好3倍追加悬赏... 各位大神,我想在C语言下调用matlab的一个函数,但是我不想用dll生成的动态链接库,有没有办法让matlab生成C的源代码,我想直接用源代码,谢谢!
答得好3倍追加悬赏!
展开
 我来答
可以叫我表哥
推荐于2016-08-05 · 知道合伙人数码行家
可以叫我表哥
知道合伙人数码行家
采纳数:25897 获赞数:1464978
2010年毕业于北京化工大学北方学院计算机科学与技术专业毕业,学士学位,工程电子技术行业4年从业经验。

向TA提问 私信TA
展开全部
matlab中调用c语言函数:
#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;

}
绯色春天
2013-12-07 · 超过23用户采纳过TA的回答
知道答主
回答量:81
采纳率:0%
帮助的人:56.9万
展开全部
matlaB中有相关的组件,可以看看matlab的书,我记得有好几本讲了这个内容的书,不过书名记不清楚了。
追问
其实不是,我看了书中的那些方法,都是混合编程,对我来说没用!
追答
matlab宝典第二版上有一个实例使用C编写的mex文件在其中调用matlaB内置函数,跟你的想法比较接近,你可以试试,搜一搜
本回答被提问者采纳
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
920020234
2015-07-07 · TA获得超过2.4万个赞
知道大有可为答主
回答量:1.2万
采纳率:0%
帮助的人:2162万
展开全部
matlab函数调用代码如下:
#include "mex.h"
#include "matrix.h"
#include "linedetect.h"
#include "string.h"

void mexFunction(int nlhs, mxArray *plhs[], int nrhs, const mxArray *prhs[])
{
int M;
int N;
double * pImg;
ntuple_list p;
struct image_double_s img_s;
if(nrhs==0)
{
mexPrintf("error input\n");
return;
}
M = mxGetM(prhs[0]);
N = mxGetN(prhs[0]);
pImg = mxGetPr(prhs[0]);
img_s.data = pImg;
img_s.xsize = M;
img_s.ysize = N;
p=lsd(&img_s);

plhs[1] = mxCreateDoubleMatrix(1,3,mxREAL);

*(mxGetPr(plhs[1])+0) = p->size;
*(mxGetPr(plhs[1])+1) = p->max_size;
*(mxGetPr(plhs[1])+2) = p->dim;
plhs[0] = mxCreateDoubleMatrix(p->dim,p->max_size,mxREAL);

memcpy(mxGetPr(plhs[0]),p->values,(p->max_size)*(p->dim)*sizeof(double));
}
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
百度网友4bd468406
2013-12-07 · TA获得超过188个赞
知道小有建树答主
回答量:334
采纳率:0%
帮助的人:135万
展开全部
我也想找到这个方法 我试过混合编程 但是可移植性太差了
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
收起 更多回答(2)
推荐律师服务: 若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询

为你推荐:

下载百度知道APP,抢鲜体验
使用百度知道APP,立即抢鲜体验。你的手机镜头里或许有别人想知道的答案。
扫描二维码下载
×

类别

我们会通过消息、邮箱等方式尽快将举报结果通知您。

说明

0/200

提交
取消

辅 助

模 式