Math 版 (精华区)

发信人: ysc (bajie), 信区: Math
标  题: 用c编写mex程序  (part 6)
发信站: 哈工大紫丁香 (Sun Oct 22 09:01:38 2000), 转信

发信人: fasiondog (乱了), 信区: MathTools       
发信站: BBS 水木清华站 (Mon Apr  5 12:53:59 1999)

发信人: dodoo (好不好), 信区: Programming
标  题: 用C编写mex程序  [PART 6]
我们之所以使用Matlab,很重要的考虑是Matlab提供了相当丰富的矩阵运算函数和各
种toolbox。在编制mex函数时,有时我们也会遇到一些操作,在Matlab下,只需要一个
为了在mex函数里调用Matlab命令,我们就需要用到一个函数mexCallMATLAB,原型如下:
int mexCallMATLAB(int nlhs, mxArray *plhs[], int nrhs, mxArray *prhs[],
                  const char *command_name);
有了前面的基础,使用这个函数就显得十分容易了。下面给出一个例程,功能是将输入
#include "mex.h"
void mexFunction(int nlhs, mxArray *plhs[],
     int nrhs, const mxArray *prhs[])
{

 double *inData;

 mxArray *IN[1];

 mxArray *OUT[1];

 double *outData;

 int M,N;

 int i,j;


 //异常处理

 if(nrhs!=1)

  mexErrMsgTxt("USAGE: b=rot(a)\n");

 if(!mxIsDouble(prhs[0]))

  mexErrMsgTxt("the Input Matrix must be double!\n");


 //计算转置

 if(mexCallMATLAB(1,OUT,1,prhs,"'"))

  mexErrMsgTxt("Error when compute!\n");


 //根据输入参数数目决定是否显示

 if(nlhs==0)

  mexCallMATLAB(0,IN,1,OUT,"disp");

 else

  plhs[0]=OUT[0];

}


关于这个例子,相信大家一看就明白,我就不多说了。


--

“恒山掌门定闲师太慈祥平和,泰山掌门天门道长威严厚重,嵩山掌门左冷禅

阴鸷险刻,我恩师是位彬彬君子,这位莫师伯外表猥琐平庸,似是个市井小人。

但五岳派的五位掌门人,其实个个是十分深沉多智之人。我令狐冲草包一个,

可和他们差得远了。”


※ 来源: 心网 cag.seu.edu.cn [FROM: 202.119.30.69]

--

--
☆ 来源:.哈工大紫丁香 bbs.hit.edu.cn.[FROM: ysc.bbs@smth.org]
[百宝箱] [返回首页] [上级目录] [根目录] [返回顶部] [刷新] [返回]
Powered by KBS BBS 2.0 (http://dev.kcn.cn)
页面执行时间:1.844毫秒