第1个回答 2013-12-07
matlaB中有相关的组件,可以看看matlab的书,我记得有好几本讲了这个内容的书,不过书名记不清楚了。
追问其实不是,我看了书中的那些方法,都是混合编程,对我来说没用!
追答matlab宝典第二版上有一个实例使用C编写的mex文件在其中调用matlaB内置函数,跟你的想法比较接近,你可以试试,搜一搜
本回答被提问者采纳
第2个回答 2015-07-07
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));
}
第3个回答 2013-12-07
我也想找到这个方法 我试过混合编程 但是可移植性太差了
第4个回答 2013-12-07
matlaB中有相关的组件,可以看看matlab的书,我记得有好几本讲了这个内容的书,不过书名记不清楚了。
追问其实不是,我看了书中的那些方法,都是混合编程,对我来说没用!
追答matlab宝典第二版上有一个实例使用C编写的mex文件在其中调用matlaB内置函数,跟你的想法比较接近,你可以试试,搜一搜
本回答被提问者采纳
第5个回答 2015-07-07
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));
}
第6个回答 2013-12-07
我也想找到这个方法 我试过混合编程 但是可移植性太差了