Matlab中Mex文件的创建和使用方法PPT课件.ppt_第1页
Matlab中Mex文件的创建和使用方法PPT课件.ppt_第2页
Matlab中Mex文件的创建和使用方法PPT课件.ppt_第3页
Matlab中Mex文件的创建和使用方法PPT课件.ppt_第4页
Matlab中Mex文件的创建和使用方法PPT课件.ppt_第5页
已阅读5页,还剩14页未读 继续免费阅读

下载本文档

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

九 MATLAB编译器和Notebook 编译器概述编译器的安装和配置创建MEX文件创建独立的外部程序EXE文件Notebook 1 9 1编译器概述 MATLAB编译器 TheMATLABCompiler MCC 可以将M文件转化为C或C 源代码 然后进一步编译链接成MEX文件或可执行程序或共享库文件 编译后可以大大提高程序的运行效率 甚至可以脱离MATLAB环境运行程序 编译器主要包括 将C源码文件生成MEX文件的mex编译器 将C源码文件生成可独立运行文件的mbuild编译器 可以将M文件转换成C源码文件并调用mex或mbuild编译器生成MEX文件或exe可执行程序的mcc编译器 9 1 1编译器的功能 产生源代码 进而生成MEX文件 MEX文件可以提高运行速度 并且可以隐藏文件算法 避免非法修改源文件 2 产生C或C 源码 进而生成独立的外部应用程序 EXE文件 该程序无需MATLAB环境支持 如果源M文件使用了绘图指令 则需要图形库支持 3 产生CMEX的S函数 加快Simulink中自定义的S函数模块的运行速度 4 产生C共享库 动态链接库 DLL 或C 静态库 它们的使用无需MATLAB环境支持 但需要MATLAB的数学库 2 9 1 2编译器的局限性 不支持M脚本文件的编译 不支持用户自定义的对象 不支持eval input inline等函数 不支持Java接口 9 2 1配置MATLAB编译器的前提准备 1 计算机必须安装有ANSIC C 编译器 下面任何一种C C 编译器均可 MicrosoftVisualC C 5 0以上版本 BorlandC C 5 0以上版本 LCCC MATLAB自带 只能用于生成MEX文件 2 在安装MATLAB时 选中组件MATLABCompilerC C MathLibraryMATLABC C GraphicsLibrary 9 2编译器的安装和配置 3 9 2 2为产生MEX文件进行预配置 要实现从M文件到MEX文件的转换 就必须先对M编译器进行正确设置 预配置包括两个过程 一是根据外部编译器的类型 软件位置对M编译器进行设置 二是利用MATLAB提供的标准文件对用户设置加以验证 1 对MATLAB编译器应用程序mex的配置 启动配置 在MATLAB指令窗口运行mex setup命令 mex setup Selectacompiler 1 LccCversion2 4inC MATLAB6P5 sys lcc 2 MicrosoftVisualC C version6 0inD ProgramFiles MicrosoftVisualStudio 0 NoneCompiler 2 Thedefaultoptionsfile D DocumentsandSettings sllu ApplicationData MathWorks MATLAB R13 mexopts bat isbeingupdatedfromC MATLAB6P5 BIN WIN32 mexopts msvc60opts bat InstallingtheMATLABVisualStudioadd in UpdatedD ProgramFiles MicrosoftVisualStudio common msdev98 template MATLABWizard awxfromC MATLAB6P5 BIN WIN32 MATLABWizard awx 4 2 验证配置的正确性 验证分两步进行 首先验证mex命令是否可以将C源码转换成MEX文件 然后再验证mcc命令是否可以将M文件转换成MEX文件 mcc命令可以在M文件转换成C源码后 自动调用mex命令 将C源码转换成MEX文件 利用MATLAB自带的yprime c和yprime m来验证mex和mcc命令 mexmy yprime c 由my yprime c文件生成my yprime dll文件 my yprime 1 1 4 运行my yprime dll文件ans 2 00008 96854 000 1 0947 1 验证mex应用程序先将 extern example mex目录下的yprime c文件复制到自己的目录下 并改名为my yprime c whichmy yprime 获得my yprime dll文件的位置信息D DocumentsandSettings sllu MyDocuments MATLAB MYFILE mex my yprime dll clearmy yprime dll 删除my yprime dll文件 2 验证mcc应用程序 先将 extern example mex目录下的yprime m文件复制到自己的目录下 并改名为my yprime m m 5 mcc xmy yprime m my yprime m 1 1 4 ans 2 00008 96854 000 1 0947 whichmy yprime mD DocumentsandSettings sllu MyDocuments MATLAB MYFILE mex my yprime m dll 9 2 2为产生独立外部应用程序进行预配置 要实现从M文件到独立外部应用程序的转换 也必须先对MATLAB编译器进行正确设置 预配置包括两个过程 一是根据外部编译器的类型 软件位置对MATLAB编译器进行设置 同时对MATLABC数学函数库进行选择 二是利用MATLAB提供的标准文件对用户设置加以验证 1 对MATLAB编译器应用程序mbuild的配置 启动配置 在MATLAB指令窗口运行mbuild setup命令 mbuild setup Selectacompiler 1 LccCversion2 4inC MATLAB6P5 sys lcc 2 MicrosoftVisualC C version6 0inD ProgramFiles MicrosoftVisualStudio 0 NoneCompiler 2Thedefaultoptionsfile D DocumentsandSettings sllu ApplicationData MathWorks MATLAB R13 compopts bat isbeingupdatedfromC MATLAB6P5 BIN WIN32 mbuildopts msvc60compp bat 6 2 验证配置的正确性 验证分两步进行 首先验证mbuild命令是否可以将C源码转换成EXE文件 然后再验证mcc命令是否可以将M文件转换成EXE文件 mcc命令可以在M文件转换成C源码后 自动调用mbuild命令 将C源码转换成EXE文件 利用MATLAB自带的ex1 c和hello m来验证mbuild和mcc命令 1 验证mex应用程序先将 extern example cmath目录下的ex1 c文件复制到自己的目录下 并改名为my ex1 c mbuildmy ex1 c 生成my ex1 exe文件在Windows的DOS窗口运行my ex1 exe文件查看其正确性 2 验证mcc应用程序 先将 extern example compiler目录下的hello m文件复制到自己的目录下 并改名为my hello m mcc pmy hello m在Windows的DOS窗口运行my hello exe文件查看其正确性 D DocumentsandSettings sllu MyDocuments MATLAB MYFILE mex my ex1 1352461 0000 7 0000i4 0000 10 0000i2 0000 8 0000i5 0000 11 0000i3 0000 9 0000i6 0000 12 0000i D DocumentsandSettings sllu MyDocuments MATLAB MYFILE mex my ex1Hello World 7 9 3创建MEX文件 创建MEX文件有两种方法 利用C源码编辑器编写C语言MEX文件 经过mex命令编译链接得到MEX文件 利用M文件编辑器编写M函数文件 经过mcc命令编译链接得到MEX文件 MEX文件的优点 运行速度快 利用C代码实现循环体要比MATLAB快很多 对于已存在的C或FORTRAN子程序 可以通过MEX文件在MATLAB环境中直接调用 而不必重新编写M文件 对于A D D A卡 或其它PC硬件 可以直接用MEX文件进行访问 利用MEX文件 可以使用如Windows用户图形界面等资源 9 3 1C语言MEX文件的构成 程序的构成主要由入口子程序和计算功能子程序两部分组成 voidmexFunction intnlhs mxArray plhs intnrhs constmxArray prhs 用来完成MATLAB与计算子程序之间通信任务的代码 1 入口子程序入口子程序必须是mexFunction 其构成形式为 mexFunction函数的参数含义为 nrhs 为输入参数的数目 prhs 为输入参数数组 是指针数组 nlhs 为输出参数的数目 plhs 为输出参数数组 是指针数组 8 入口子程序的作用是在MATLAB系统与被调用的外部子程序之间建立通信联系 2 计算功能子程序计算功能子程序包含所有的实际需要完成的功能源代码 可以是用户以前所编写的算法和程序 以函数的形式存在 C语言MEX文件必须包含mex h库 include mex h mex h库中包含了C语言MEX文件所需要的mex 函数和matrix h库 定义了mx 函数 mex 和mx 函数是MATLAB提供与外界程序接口的函数 mx 函数用来实现MATLAB的矩阵操作 mex 函数用来实现从MATLAB环境中获取矩阵数据并返回信息 9 3 2C语言MEX文件的建立 timestwo c include mex h 计算功能子程序timestwo 计算一个数的两倍 voidtimestwo doubley doublex y 0 2 0 x 0 入口子程序mexFunction voidmexFunction intnlhs mxArray plhs intnrhs constmxArray prhs double x y intmrows ncols 9 检查输入输出参数 if nrhs 1 mexErrMsgTxt Oneinputrequired elseif nlhs 1 mexErrMsgTxt Toomanyoutputarguments 输入只能是一个双精度型的实数 mrows mxGetM prhs 0 ncols mxGetN prhs 0 if mxIsDouble prhs 0 mxIsComplex prhs 0 mrows 1 在MATLAB命令窗口运行 mextimestwo c y timestwo 3 y 6 10 9 3 3由M文件创建CMEX文件 M脚本文件不能编译成MEX文件 必须把M脚本文件改写M函数文件才能进行编译 利用MATLAB编译器来由M函数文件创建MEX文件 使用 mcc x 命令 circle mfunctioncircle x y r varargin ifnargin3flag varargin 1 endifflagfill x1 r x y1 r y b endaxissquare 在MATLAB命令窗口运行 mcc xcircle m circle circle 1 1 2 1 11 9 4创建独立的外部程序EXE文件 MEX文件只能在MATLAB环境中运行 而EXE文件可以独立于MATLAB环境运行 用来创建独立应用程序的源代码可以是M文件 C语言文件或者这些文件的组合 不管是哪一种文件格式 都应该包含有主函数 如C语言的main函数 得到的exe文件如果要正常运行 需要下列文件 mbuild编译得到的bin目录下的所有文件 所调用的MEX文件 MATLAB提供的数学库 MATLAB提供的图形库 mcc指令的典型调用格式 可以利用mcc 或helpmcc查询帮助 mcc xfilename1filename2由M函数文件得到MEX文件filename1 dllmcc mfilename由不包含绘图指令的M文件得到可执行的exe文件 c 3 mcc pfilename由不包含绘图指令的M文件得到可执行的exe文件 c 4 mcc Bsglfilename由含绘图指令的M文件得到可执行的exe文件 c 5 mcc Bsglcppfilename由包含绘图指令的M文件得到可执行的exe文件 c 独立应用程序 注意 与mcc之间必须有空格 12 main mmrank m main mfunctionmainr mrank 5 mrank mfunctionr mrank n 向量r的每一个元素代表了一个魔方方阵的秩r zeros n 1 fork 1 nr k rank magic k end 在MATLAB指令窗口运行命令 mcc mmainmrank 由M文件生成exe文件 在Windows的DOS窗口运行 D DocumentsandSettings sllu MyDocuments MATLAB MYFILE mex mainr 12335 13 circle main mcircle fun m circle main mfunctioncircle maincircle fun 1 1 2 1 circle fun mfunctioncircle fun x y r varargin ifnargin3flag varargin 1 endifflagfill x1 r x y1 r y b endaxissquare 在MATLAB指令窗口运行命令 mcc Bsglcircle main 在DOS窗口运行 D DocumentsandSettings sllu MyDocuments MATLAB MYFILE mex circle main 14 9 5Notebook Notebook 笔记本 是MATLAB与MicrosoftWord的完美结合 使用户能在Word环境下灵活地使用MATLAB的数学运算和可视化功能 营造一个融文字处理 科学计算 工程设计于一体地工作环境 9 5 1Notebook的安装 启动MATLAB后 在命令窗口中运行指令 note setup根据自己计算机所用Word的版本等 在提示下操作 直到出现 Notebooksetupiscomplete 则表示安装结束 9 5 2Notebook的启动 1 创建M book文件 1 从Word中启动Notebook 选择Word窗口的菜单 文件 新建 在出现的对话框中 选择 m book 则出现如图所示的新建对话框 选择 m book 图标 按 确定 按钮 当保存文件时 默认的文件名为 TheMATLABNotebookv1 doc 15 2 从MATLAB中启动Notebook 在MATLAB命令窗口输入 notebook 命令 就可以启动Notebook notebook打开一个新的M book文档notebookFileName打开已存在的M book文件FileName应包括文件的完整路径和文件名 2 M book的界面 M book的界面比普通的Word多一个 Notebook 菜单 9 5 3Notebook的使用 1 输入细胞 群 的创建和运行 在Notebook中 凡参与Word和MATLAB之间信息交换的部分 就称为 细胞 群 1 只创建不运行输入细胞 群 在英文状态下按普通的文本输入方式 输入MATLAB命令 可以是独立行或嵌在文本中 然后用光标选中 按组合键 Alt D 或选择菜单 Notebook DefineInputCell 则所选中的文本形式命令就变成了输入细胞 2 创建并同时运行输入细胞在英文状态下按普通的文本输入方式 输入MATLAB命令 然后用光标选中 按组合键 Ctrl Enter 或选择菜单 Notebook EvaluateCell 则所选中的文本形式命令就会自动变成输入细胞 并得出运算结果 即输出细胞 16 2 自初始化细胞及其应用 自初始化细胞 AutoInitCell 与输入细胞唯一不同是 自初始化细胞会在用户启动Notebook时被自动送去运算 而输入细胞则不具备这种功能 创建自初始细胞的方法是先将文本形式的MATLAB命令或已存在的输入细胞用光标选中 然后选择菜单 Notebook DefineAutoInitCell 则选中的文本形式MATLAB命令就会自动变成AutoInit格式 3 输出细胞 输出细胞是MATLAB的输出结果 包括数据 图形和出错信息 输出数据的有效数字 图形的大小都可以借助 Notebook NotebookOptions 菜单项打开的对话框进行设置 1 自初始化细胞的创建 为了避免其它文件或命令窗口中变量的改变影响该文件 保证文件输入输出数据的一致性 可以用 clear 命令作为该文件的第一个

温馨提示

  • 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
  • 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
  • 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
  • 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
  • 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
  • 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
  • 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

评论

0/150

提交评论