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

📄 c编写mex程序4.htm

📁 VC与Matlab混合编程文章.
💻 HTM
字号:
<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.0 Transitional//EN">
<!-- saved from url=(0113)http://bbs.sjtu.edu.cn/cgi-bin/bbsanc?path=/groups/GROUP_4/MathTools/DA6B7A1FF/D9BB618C8/D47AB10D3/M.1025941420.A -->
<HTML><HEAD><TITLE>SJTUBBS精华区文章</TITLE>
<META content="text/html; charset=gb2312" http-equiv=Content-Type><LINK 
href="c编写mex程序4.files/bbstyle.css" rel=stylesheet type=text/css>
<META content="MSHTML 5.00.3315.2870" name=GENERATOR></HEAD>
<BODY>
<CENTER>
<TABLE class=title width="90%">
  <TBODY>
  <TR>
    <TH align=left class=title width="33%">文章阅读</TH>
    <TH align=middle class=title width="33%">饮水思源</TH>
    <TH align=right class=title width="34%">精华区</TH></TR></TBODY></TABLE>
<HR>

<TABLE class=doc>
  <TBODY>
  <TR>
    <TD class=doc><PRE>发信人: GzLi (苍鹰-文子), 信区: MathTools
标  题: c编写mex程序&lt;4&gt; (zz)
发信站: 饮水思源 (2002年07月06日15:43:44 星期六), 站内信件

发信人: dodoo (虚怀), 信区: Programming 
标  题: 用C编写mex程序  [PART 4] 
输入数据是在函数调用之前已经在Matlab里申请了内存的,由于mex函数与Matlab共
用同 
一个地址空间,因而在prhs[]里传递指针就可以达到参数传递的目的。但是,输出参
却需要在mex函数内申请到内存空间,才能将指针放在plhs[]中传递出去。由于返回
指针 
类型必须是mxArray,所以Matlab专门提供了一个函数:mxCreateDoubleMatrix来实
现内 
存的申请,函数原型如下: 
mxArray *mxCreateDoubleMatrix(int m, int n, mxComplexity ComplexFlag) 
m:待申请矩阵的行数 
n:待申请矩阵的列数 
为矩阵申请内存后,得到的是mxArray类型的指针,就可以放在plhs[]里传递回去了
。但 
是对这个新矩阵的处理,却要在函数内完成,这时就需要用到前面介绍的mxGetPr。
使用 
mxGetPr获得指向这个矩阵中数据区的指针(double类型)后,就可以对这个矩阵进
行各 
种操作和运算了。下面的程序是在上面的show.c的基础上稍作改变得到的,功能是将
 
//reverse.c 1.0 
 
 
#include "mex.h" 
 
void mexFunction(int nlhs, mxArray *plhs[], 
 
     int nrhs, const mxArray *prhs[]) 
 
{ 
 
 double *inData; 
 
 double *outData; 
 
 int M,N; 
 
 int i,j; 
 
 
 
 inData=mxGetPr(prhs[0]); 
 
 M=mxGetM(prhs[0]); 
 
 N=mxGetN(prhs[0]); 
 
 
 plhs[0]=mxCreateDoubleMatrix(M,N,mxREAL); 
 
 outData=mxGetPr(plhs[0]); 
 
 
 for(i=0;i&lt;M;i++) 
 
  for(j=0;j&lt;N;j++) 
 
   outData[j*M+i]=inData[(N-1-j)*M+i]; 
 
} 
 
 
当然,Matlab里使用到的并不是只有double类型这一种矩阵,还有字符串类型、稀疏
 
阵、结构类型矩阵等等,并提供了相应的处理函数。本文用到编制mex程序中最经常
遇到 
 
的一些函数,其余的详细情况清参考Apiref.pdf。 
 
 
-- 
 
※ 来源: 心网 cag.seu.edu.cn [FROM: 202.119.30.69] 

--
她总是警告我说:如果你不学习,你将什么都不是。绝对什么都不是。
                学习没有任何捷径可言。不要欺骗你自己。
welcome to <B><FONT class=col31>Matlab</FONT></B> http://bbs.sjtu.edu.cn/cgi-bin/bbsdoc?board=Matlab
welcome to <B><FONT class=col32>DataMining</FONT></B>  http://DataMining.bbs.lilybbs.net
<B><FONT class=col36>※ 修改:·GzLi 於 07月06日15:45:05 修改本文·[FROM: 211.80.38.29]</FONT></B>
<FONT class=col31>※ 来源:·饮水思源 bbs.sjtu.edu.cn·[FROM: 211.80.38.29] </FONT>
</PRE></TR></TBODY></TABLE>
<HR>

<TABLE class=foot>
  <TBODY>
  <TR>
    <TH class=foot><A href="http://bbs.sjtu.edu.cn/">返回首页</A></TH>
    <TH class=foot><A 
href="http://bbs.sjtu.edu.cn/cgi-bin/bbssec">分类讨论区</A></TH>
    <TH class=foot><A 
  href="http://bbs.sjtu.edu.cn/cgi-bin/bbsall">全部讨论区</A></TH></TR></TBODY></TABLE></CENTER></BODY></HTML>

⌨️ 快捷键说明

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