下载本文档
版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
1、1,九、MATLAB编译器和Notebook,编译器概述 编译器的安装和配置 创建MEX文件 创建独立的外部程序EXE文件 Notebook,2,9.1 编译器概述,MATLAB编译器(The MATLAB Compiler,MCC)可以将M文件转化为C或C源代码,然后进一步编译链接成MEX文件或可执行程序或共享库文件。编译后可以大大提高程序的运行效率,甚至可以脱离MATLAB环境运行程序。,编译器主要包括: 将C源码文件生成MEX文件的mex编译器; 将C源码文件生成可独立运行文件的mbuild编译器; 可以将M文件转换成C源码文件并调用mex或mbuild编译器生成MEX文件或exe可执行
2、程序的mcc编译器。,9.1.1 编译器的功能,产生源代码,进而生成MEX文件。 MEX文件可以提高运行速度,并且可以隐藏文件算法,避免非法修改源文件。,2 . 产生C或C源码,进而生成独立的外部应用程序(EXE文件)。 该程序无需MATLAB环境支持,如果源M文件使用了绘图指令,则需要图形库支持。,3. 产生C MEX的S函数。加快Simulink中自定义的S函数模块的运行速度。,4. 产生C共享库(动态链接库、DLL)或C+静态库。 它们的使用无需MATLAB环境支持,但需要MATLAB的数学库。,3,9.1.2 编译器的局限性,不支持M脚本文件的编译。 不支持用户自定义的对象。 不支持e
3、val,input,inline等函数。 不支持Java接口。,9.2.1 配置MATLAB编译器的前提准备,1. 计算机必须安装有ANSIC/C+编译器。下面任何一种C/C+编译器均可。 Microsoft Visual C/C+5.0以上版本。 Borland C/C+5.0以上版本。 LCC C (MATLAB自带,只能用于生成MEX文件)。,2. 在安装MATLAB时,选中组件 MATLAB Compiler C/C+ Math Library MATLAB C/C+ Graphics Library,9.2 编译器的安装和配置,4,9.2.2 为产生MEX文件进行预配置,要实现从M文
4、件到MEX文件的转换,就必须先对M编译器进行正确设置。预配置包括两个过程:一是根据外部编译器的类型、软件位置对M编译器进行设置;二是利用MATLAB提供的标准文件对用户设置加以验证。,1. 对MATLAB编译器应用程序mex的配置,启动配置:在MATLAB指令窗口运行mex-setup 命令 mex-setup,Select a compiler: 1 Lcc C version 2.4 in C:MATLAB6P5syslcc 2 Microsoft Visual C/C+ version 6.0 in D:Program FilesMicrosoft Visual Studio 0 Non
5、e Compiler:2,The default options file: D:Documents and SettingsslluApplication DataMathWorksMATLABR13mexopts.bat is being updated from C:MATLAB6P5BINWIN32mexoptsmsvc60opts.bat. Installing the MATLAB Visual Studio add-in . Updated D:Program FilesMicrosoft Visual Studiocommonmsdev98templateMATLABWizar
6、d.awx from C:MATLAB6P5BINWIN32MATLABWizard.awx,5,2. 验证配置的正确性,验证分两步进行:首先验证mex命令是否可以将C源码转换成MEX文件;然后再验证mcc命令是否可以将M文件转换成MEX文件。mcc命令可以在M文件转换成C源码后,自动调用mex命令,将C源码转换成MEX文件。,利用MATLAB自带的yprime.c和yprime.m来验证mex和mcc命令。,mex my_yprime.c %由my_yprime.c文件生成my_yprime.dll文件 my_yprime(1,1:4) %运行my_yprime.dll文件 ans= 2.0
7、000 8.9685 4.000 -1.0947,(1)验证mex应用程序 先将externexamplemex目录下的yprime.c文件复制到自己的目录下,并改名为my_yprime.c。,which my_yprime %获得my_yprime.dll文件的位置信息 D:Documents and SettingsslluMy DocumentsMATLABMYFILEmexmy_yprime.dll,clear my_yprime.dll %删除my_yprime.dll文件,(2)验证mcc应用程序,先将externexamplemex目录下的yprime.m文件复制到自己的目录下,
8、并改名为my_yprime_m.m。,6,mcc-x my_yprime_m my_yprime_m(1,1:4) ans= 2.0000 8.9685 4.000 -1.0947,which my_yprime_m D:Documents and SettingsslluMy DocumentsMATLABMYFILEmexmy_yprime_m.dll,9.2.2 为产生独立外部应用程序进行预配置,要实现从M文件到独立外部应用程序的转换,也必须先对MATLAB编译器进行正确设置。预配置包括两个过程:一是根据外部编译器的类型、软件位置对MATLAB编译器进行设置,同时对MATLAB C数学函
9、数库进行选择;二是利用MATLAB提供的标准文件对用户设置加以验证。,1. 对MATLAB编译器应用程序mbuild的配置,启动配置:在MATLAB指令窗口运行mbuild-setup 命令 mbuild-setup,Select a compiler: 1 Lcc C version 2.4 in C:MATLAB6P5syslcc 2 Microsoft Visual C/C+ version 6.0 in D:Program FilesMicrosoft Visual Studio 0 None Compiler: 2 The default options file: D:Docume
10、nts and SettingsslluApplication DataMathWorksMATLABR13compopts.bat is being updated from C:MATLAB6P5BINWIN32mbuildoptsmsvc60compp.bat.,7,2. 验证配置的正确性,验证分两步进行:首先验证mbuild命令是否可以将C源码转换成EXE文件;然后再验证mcc命令是否可以将M文件转换成EXE文件。mcc命令可以在M文件转换成C源码后,自动调用mbuild命令,将C源码转换成EXE文件。,利用MATLAB自带的ex1.c和hello.m来验证mbuild和mcc命令。,
11、(1)验证mex应用程序 先将externexamplecmath目录下的ex1.c文件复制到自己的目录下,并改名为my_ex1.c。,mbuild my_ex1.c %生成my_ex1.exe文件 在Windows的DOS窗口运行my_ex1.exe文件查看其正确性。,(2)验证mcc应用程序,先将externexamplecompiler目录下的hello.m文件复制到自己的目录下,并改名为my_hello.m。,mcc -p my_hello.m 在Windows的DOS窗口运行my_hello.exe文件查看其正确性。,D:Documents and SettingsslluMy Do
12、cumentsMATLABMYFILEmexmy_ex1,1 3 5 2 4 6 1.0000+7.0000i 4.0000+10.0000i 2.0000+8.0000i 5.0000+11.0000i 3.0000+9.0000i 6.0000+12.0000i,D:Documents and SettingsslluMy DocumentsMATLABMYFILEmexmy_ex1 Hello,World,8,9.3 创建MEX文件,创建MEX文件有两种方法: 利用C源码编辑器编写C语言MEX文件,经过mex命令编译链接得到MEX文件。 利用M文件编辑器编写M函数文件,经过mcc命令编译
13、链接得到MEX文件。,MEX文件的优点: 运行速度快,利用C代码实现循环体要比MATLAB快很多; 对于已存在的C或FORTRAN子程序,可以通过MEX文件在MATLAB环境中直接调用,而不必重新编写M文件 ; 对于A/D、D/A卡,或其它PC硬件,可以直接用MEX文件进行访问 ; 利用MEX文件,可以使用如Windows用户图形界面等资源。,9.3.1 C语言MEX文件的构成,程序的构成主要由入口子程序和计算功能子程序两部分组成。,void mexFunction( int nlhs, mxArray *plhs, int nrhs, const mxArray*prhs ) /*用来完成M
14、ATLAB与计算子程序之间通信任务的代码*/ ,(1) 入口子程序 入口子程序必须是mexFunction,其构成形式为:,mexFunction函数的参数含义为: nrhs:为输入参数的数目。 prhs:为输入参数数组,是指针数组。 nlhs:为输出参数的数目。 plhs:为输出参数数组,是指针数组。,9,入口子程序的作用是在MATLAB系统与被调用的外部子程序之间建立通信联系。,(2) 计算功能子程序 计算功能子程序包含所有的实际需要完成的功能源代码,可以是用户以前所编写的算法和程序,以函数的形式存在。,C语言MEX文件必须包含mex.h库:include”mex.h”。mex.h库中包含
15、了C语言MEX文件所需要的mex-函数和matrix.h库(定义了mx-函数)。 mex-和mx-函数是MATLAB提供与外界程序接口的函数。mx-函数用来实现MATLAB的矩阵操作;mex-函数用来实现从MATLAB环境中获取矩阵数据并返回信息。,9.3.2 C语言MEX文件的建立,timestwo.c #include mex.h“ /*计算功能子程序timestwo,计算一个数的两倍*/ void timestwo(double y, double x) y0 = 2.0*x0; /*入口子程序mexFunction*/ void mexFunction( int nlhs, mxArr
16、ay *plhs, int nrhs, const mxArray *prhs ) double *x,*y; int mrows,ncols;,10,/* 检查输入输出参数 */ if(nrhs!=1) mexErrMsgTxt(One input required.); else if(nlhs1) mexErrMsgTxt(Too many output arguments); /* 输入只能是一个双精度型的实数*/ mrows = mxGetM(prhs0); ncols = mxGetN(prhs0); if( !mxIsDouble(prhs0) | mxIsComplex(prh
17、s0) | !(mrows=1 ,在MATLAB命令窗口运行 mex timestwo.c y=timestwo(3),y= 6,11,9.3.3 由M文件创建C MEX文件,M脚本文件不能编译成MEX文件,必须把M脚本文件改写M函数文件才能进行编译。 利用MATLAB编译器来由M函数文件创建MEX文件,使用“mcc x”命令。,%circle.m function circle(x,y,r,varargin) if nargin3 flag=varargin1; end if flag fill(x1*r+x,y1*r+y,b) end axis square;,在MATLAB命令窗口运行
18、mcc x circle.m circle,circle(1,1,2,1),12,9.4 创建独立的外部程序EXE文件,MEX文件只能在MATLAB环境中运行;而EXE文件可以独立于MATLAB环境运行。,用来创建独立应用程序的源代码可以是M文件、C语言文件或者这些文件的组合。不管是哪一种文件格式,都应该包含有主函数,如C语言的main函数。,得到的exe文件如果要正常运行,需要下列文件: mbuild编译得到的bin目录下的所有文件; 所调用的MEX文件; MATLAB提供的数学库; MATLAB提供的图形库。,mcc指令的典型调用格式(可以利用mcc-?或help mcc查询帮助): mc
19、c -x filename1 filename2 由M函数文件得到MEX文件filename1.dll mcc -m filename 由不包含绘图指令的M文件得到可执行的exe文件(c) 3. mcc -p filename 由不包含绘图指令的M文件得到可执行的exe文件(c+) 4. mcc -B sgl filename 由含绘图指令的M文件得到可执行的exe文件(c) 5. mcc -B sglcpp filename 由包含绘图指令的M文件得到可执行的exe文件(c+独立应用程序),注意:“”与mcc之间必须有空格!,13,main.m mrank.m %main.m functio
20、n main r=mrank(5) %mrank.m function r=mrank(n) %向量r的每一个元素代表了一个魔方方阵的秩 r=zeros(n,1); for k=1:n r(k)=rank(magic(k); end,在MATLAB指令窗口运行命令 mcc -m main mrank %由M文件生成exe文件,在Windows的DOS窗口运行,D:Documents and SettingsslluMy DocumentsMATLABMYFILEmexmain r= 1 2 3 3 5,14,circle_main.m circle_fun.m %circle_main.m f
21、unction circle_main circle_fun(1,1,2,1) %circle_fun.m function circle_fun(x,y,r,varargin) if nargin3 flag=varargin1; end if flag fill(x1*r+x,y1*r+y,b) end axis square;,在MATLAB指令窗口运行命令 mcc B sgl circle_main,在DOS窗口运行: D:Documents and SettingsslluMy DocumentsMATLABMYFILEmexcircle_main,15,9.5 Notebook,N
22、otebook(笔记本)是MATLAB与Microsoft Word的完美结合,使用户能在Word环境下灵活地使用MATLAB的数学运算和可视化功能,营造一个融文字处理、科学计算、工程设计于一体地工作环境。,9.5.1 Notebook的安装,启动MATLAB后,在命令窗口中运行指令 note-setup 根据自己计算机所用Word的版本等,在提示下操作 ,直到出现“Notebook setup is complete”,则表示安装结束。,9.5.2 Notebook的启动,1. 创建M-book文件,(1) 从Word中启动Notebook,选择Word窗口的菜单“文件”“新建”,在出现的对
23、话框中,选择“m-book”,则出现如图所示的新建对话框,选择“m-book”图标,按“确定”按钮。当保存文件时,默认的文件名为“The MATLAB Notebook v1.doc”。,16,(2) 从MATLAB中启动Notebook,在MATLAB命令窗口输入“notebook”命令,就可以启动Notebook。 notebook打开一个新的M-book文档 notebook FileName打开已存在的M-book文件 FileName应包括文件的完整路径和文件名。,2. M-book的界面,M-book的界面比普通的Word多一个“Notebook”菜单 。,9.5.3 Notebo
24、ok的使用,1. 输入细胞(群)的创建和运行,在Notebook中,凡参与Word和MATLAB之间信息交换的部分,就称为”细胞(群)“。,(1) 只创建不运行输入细胞(群),在英文状态下按普通的文本输入方式,输入MATLAB命令,可以是独立行或嵌在文本中,然后用光标选中,按组合键“Alt-D”,或选择菜单“Notebook”“Define Input Cell”,则所选中的文本形式命令就变成了输入细胞。,(2) 创建并同时运行输入细胞 在英文状态下按普通的文本输入方式,输入MATLAB命令,然后用光标选中,按组合键“Ctrl-Enter”,或选择菜单“Notebook”“Evaluate C
25、ell”,则所选中的文本形式命令就会自动变成输入细胞,并得出运算结果,即输出细胞。,17,2. 自初始化细胞及其应用,自初始化细胞(AutoInit Cell)与输入细胞唯一不同是:自初始化细胞会在用户启动Notebook时被自动送去运算,而输入细胞则不具备这种功能。,创建自初始细胞的方法是先将文本形式的MATLAB命令或已存在的输入细胞用光标选中,然后选择菜单“Notebook”“Define AutoInit Cell”,则选中的文本形式MATLAB命令就会自动变成AutoInit 格式。,3. 输出细胞,输出细胞是MATLAB的输出结果,包括数据、图形和出错信息。 输出数据的有效数字、图形的大小都可以借助“Notebook”“Notebook Options”菜单项打开的对话框进行设置。,(1)自初始化细胞的创建,为了避免其它文件或命令窗口中变量的改变影响该文件,保证文件输入输出数据的一致性,可以用“clear”命令作为
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 现代企业的企业文化建设策略
- 2026年个人简历制作及求职技巧测试题
- 2026年村社智能手机应用与数字生活科普试题
- 预防婴幼儿腹泻的有效方法
- 小学生英文朗读演讲稿
- 职场沟通演讲稿作文素材
- 初中考试演讲稿格式
- 我为红领巾奖章演讲稿
- 英语演讲稿的结尾落款
- 农产品损耗降低策略探讨
- 太原铁路局集团招聘笔试题库2026
- 企业信息安全事件应急响应与处理手册
- 上交所2026校招笔试题
- 2025年高中创新能力大赛笔试题资格审查试题(附答案)
- 2023四川宜宾市翠屏区招聘社区专职工作者(第二批)笔试历年典型考题及考点剖析附答案带详解
- adl评定量表参考
- 初中英语作业改革实践研究课题报告
- 内蒙古环投集团笔试试题
- 激光雕刻产品的设计与制作-课件
- 体育培优补差记录表模板
- 池州市事业单位考试历年真题
评论
0/150
提交评论