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毫秒