⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 mathtools597.txt

📁 C++ interface
💻 TXT
字号:
发信人: FangQ (木头虫子), 信区: MathTools 
标  题: Matlab与C++接口与混合编程讨论小结(八) 
发信站: BBS 水木清华站 (Tue Nov  2 22:28:53 1999) 
  
第二章、 
第六节、用c编写mex程序[六] 
BBS水木清华站∶精华区 
发信人: fasiondog (乱了), 信区: MathTools 
标  题: 用c编写mex程序  (part 6) 
发信站: 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]; 
  
  
  plhs[0]=OUT[0]; 
  
} 
  
  
关于这个例子,相信大家一看就明白,我就不多说了。 
-- 
  
      这   是   最   后   的   斗   争 
      THIS   IS   THE  FINAL  CONFLICT 
  
※ 来源:·BBS 水木清华站 bbs.net.tsinghua.edu.cn·[FROM: 202.115.15.64] 

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -