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

📄 5.htm

📁 介绍了如何在matlab中调用C还是进行快速的运算
💻 HTM
字号:
<html>
<head>
<meta http-equiv="Content-Type" content="text/html; charset=gb2312">
<title>CTerm非常精华下载</title>
</head>
<body bgcolor="#FFFFFF">
<table border="0" width="100%" cellspacing="0" cellpadding="0" height="577">
<tr><td width="32%" rowspan="3" height="123"><img src="DDl_back.jpg" width="300" height="129" alt="DDl_back.jpg"></td><td width="30%" background="DDl_back2.jpg" height="35"><p align="center"><a href="http://sbbs.seu.edu.cn"><font face="黑体"><big><big>seu</big></big></font></a></td></tr>
<tr>
<td width="68%" background="DDl_back2.jpg" height="44"><big><big><font face="黑体"><p align="center">              在matlab里面调用c                     (BM: luckzpz)               </font></big></big></td></tr>
<tr>
<td width="68%" height="44" bgcolor="#000000"><font face="黑体"><big><big><p   align="center"></big></big><a href="http://cterm.163.net"><img src="banner.gif" width="400" height="60" alt="banner.gif"border="0"></a></font></td>
</tr>
<tr><td width="100%" colspan="2" height="100" align="center" valign="top"><br><p align="center">[<a href="mex.htm">回到开始</a>][<a href="mex.htm">上一层</a>][<a href="6.htm">下一篇</a>]
<hr><p align="left"><small>发信人: babylon (淡蓝的晚间), 信区: MathTools <br>

标  题: 用c编写mex程序[part 5]--dodoo(转载) <br>

发信站: 虎踞龙蟠BBS站 (2000年06月03日20:29:00 星期六), 转信 <br>

  <br>

【 以下文字转载自 Radio 讨论区 】 <br>

【 原文由 babylon 所发表 】 <br>

通过前面两部分的介绍,大家对参数的输入和输出方法应该有了基本的了解。具备了这 <br>

些知识,就能够满足一般的编程需要了。但这些程序还有些小的缺陷,以前面介绍的re <br>

由于前面的例程中没有对输入、输出参数的数目及类型进行检查,导致程序的容错性很 <br>

#include "mex.h" <br>

void mexFunction(int nlhs, mxArray *plhs[], <br>

     int nrhs, const mxArray *prhs[]) <br>

{ <br>

 double *inData; <br>

 double *outData; <br>

 int M,N; <br>

 //异常处理 <br>

 if(nrhs!=1) <br>

  <br>

  mexErrMsgTxt("USAGE: b=reverse(a)\n"); <br>

  <br>

 if(!mxIsDouble(prhs[0])) <br>

  <br>

  <br>

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

  <br>

  <br>

 inData=mxGetPr(prhs[0]); <br>

  <br>

 M=mxGetM(prhs[0]); <br>

  <br>

 N=mxGetN(prhs[0]); <br>

  <br>

  <br>

 plhs[0]=mxCreateDoubleMatrix(M,N,mxREAL); <br>

  <br>

 outData=mxGetPr(plhs[0]); <br>

  <br>

  <br>

 for(i=0;i<M;i++) <br>

  <br>

  for(j=0;j<N;j++) <br>

  <br>

   outData[j*M+i]=inData[(N-1-j)*M+i]; <br>

  <br>

} <br>

} <br>

  <br>

  <br>

在上面的异常处理中,使用了两个新的函数:mexErrMsgTxt和mxIsDouble。MexErrMsgT <br>

  <br>

xt在给出出错提示的同时退出当前程序的运行。MxIsDouble则用于判断mxArray中的数据 <br>

  <br>

是否double类型。当然Matlab还提供了许多用于判断其他数据类型的函数,这里不加详 <br>

  <br>

述。 <br>

  <br>

  <br>

需要说明的是,Matlab提供的API中,函数前缀有mex-和mx-两种。带mx-前缀的大多是对 <br>

  <br>

mxArray数据进行操作的函数,如mxIsDouble,mxCreateDoubleMatrix等等。而带mx前缀 <br>

  <br>

的则大多是与Matlab环境进行交互的函数,如mexPrintf,mxErrMsgTxt等等。了解了这 <br>

  <br>

一点,对在Apiref.pdf中查找所需的函数很有帮助。 <br>

  <br>

  <br>

至此为止,使用C编写mex函数的基本过程已经介绍完了。下面会在介绍几个非常有用的 <br>

  <br>



函数调用。如果有足够的时间,也许还会有一个更复杂一些的例程。 <br>

  <br>

  <br>

-- <br>

        DEADorALIVE <br>

  <br>

※ 来源:.虎踞龙盘东南站 sbbs.seu.edu.cn.[FROM: 202.119.22.71] <br>

-- <br>

※ 转载:.虎踞龙蟠BBS站 sbbs.seu.edu.cn.[FROM: 202.119.22.102] <br>

</small><hr>
<p align="center">[<a href="mex.htm">回到开始</a>][<a href="mex.htm">上一层</a>][<a href="6.htm">下一篇</a>]
<p align="center"><a href="http://cterm.163.net">欢迎访问Cterm主页</a></p>
</table>
</body>
</html>

⌨️ 快捷键说明

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