MATLAB高级应用.ppt
《MATLAB高级应用.ppt》由会员分享,可在线阅读,更多相关《MATLAB高级应用.ppt(38页珍藏版)》请在三一办公上搜索。
1、第8章 MATLAB高级应用,8.1 MATLAB应用接口,8.2 低级文件输入/输出,8.3 Notebook,8.1 MATLAB应用接口,8.1.1 MEX文件1MEX文件系统设置下面采用Microsoft Visual C/C+6.0编译器,在命令窗口使用“mex-setup”命令,对MEX文件编译器进行配置,使MATLAB系统知道使用哪一个编译器及编译器的参数,并一步一步进行配置。mex-setup则会出现如下提示。Please choose your compiler for building external interface(MEX)files:Would you like
2、mex to locate installed compilers y/n?y允许用户选择是否同意mex命令自动定位已经安装的编译器,输入“y”后,按回车键后出现如下提示。Select a compiler:1 Lcc-win32 C 2.4.1 in C:PROGRA1MATLABR2010asyslcc 0 None,8.1.1 MEX文件,提供用户选择编译器作为默认的MEX文件编译器,通过键盘输入“1”后,按回车键后出现如下提示。Please verify your choices:Compiler:Lcc-win32 C 2.4.1 Location:C:PROGRA1MATLABR2
3、010asyslcc Are these correct y/n?yTrying to update options file:C:UsersCAOYIAppDataRoaming MathWorksMATLAB R2010a mexopts.bat From template:C:PROGRA1MATLABR2010abinwin32mexoptslccopts.bat Done.,8.1.1 MEX文件,2C语言MEX文件的构成C语言MEX文件具有特定的结构,下面通过查看“yprime.c”体现C语言MEX文件的基本框架,文件内容。(1)入口子程序。程序的第1部分入口子程序的作用是在MAT
4、LAB系统与被调用的外部子程序之间建立通信联系。子程序分别定义了被MATLAB调用的外部子程序的入口地址,MATLAB系统向子程序传递的子程序参数,子程序向MATLAB系统返回的结果参数,以及调用计算功能子程序等。入口子程序必须是mexFunction,其构成形式为:void mexFunction(int nlhs,mxArray*plhs,int nrhs,const mxArray*prhs)/*用来完成MATLAB与计算子程序之间通信任务的代码*/,8.1.1 MEX文件,(2)计算功能子程序。程序的第2部分为计算功能子程序,包含所有实际需要完成的功能源代码,可以是用户以前所编写的算法
5、和程序,以函数的形式存在,如上例中的“yprime”函数就是计算功能子程序。如果用户要将以前的程序和算法移植到MATLAB环境中使用,则必须将其表示为函数形式。,8.1.1 MEX文件,3C语言MEX文件的建立(1)常用MATLAB API函数。在MEX文件中,常用MATLAB API函数有如下几种。mxGetM:获得矩阵的行数。mxGetN:获得矩阵的列数。mxGetPr:获得矩阵的实数部分的数据指针。mexErrMsgTxt:输出错误信息,并返回到MATLAB命令提示符下。mxCreateString:创建1个字符串矩阵。mxCreateDoubleMatrix:创建1个二维未赋值的双精度
6、浮点类型的矩阵。mxIsDouble:判断矩阵是否为双精度类型。(2)C语言MEX文件的创建。通过创建计算1个数的平方的倒数程序介绍1个MEX文件创建的过程。,8.1.1 MEX文件,【例8.1】在Microsoft Visual C+6.0环境下创建1个MEX文件,实现计算1个数的平方的倒数。在Microsoft Visual C+6.0环境下创建1个“C+Source File”文件,文件名为“Ex0801.cpp”。编写该文件的程序代码。在MATLAB命令窗口的当前目录浏览器中将当前目录设置为用户的目录,输入命令创建MEX文件并运行。mex Ex0801.cpp y=Ex0801(2)y
7、=0.2500,8.1.1 MEX文件,为该文件添加帮助M文件。为了在MATLAB中方便地查看该Ex0801.dll文件的帮助信息,可以建立1个Ex0801.M文件,并输入以下内容。%function y=Ex0801(x)%计算一个数的平方的倒数%y=1/(x2)%copyright 2007510在MATLAB命令窗口中,用help命令只能看到M文件查看帮助信息。help Ex0801 function y=Ex0801(x)计算1个数的平方的倒数 y=1/(x2)copyright 2007510,8.1.2 使用MATLAB编译器,【例8.2】在MATLAB环境中创建1个M函数文件,用
8、来绘制正弦信号波形。在MATLAB的编辑/调试窗口中创建1个Ex0802.m函数文件,编写程序代码如下。function Ex0802%Ex0802 绘制正弦信号波形x=0:0.1:2*pi;y=sin(x);plot(x,y)新建文件夹为“Ex0802”,将文件“Ex0802.m”保存在该文件夹下,设置该文件夹为当前目录,在MATLAB命令窗口中由该M文件创建MEX文件。mcc-m-g Ex0802%创建Ex0802.exe文件 dir.Ex0802.m ex0802.pdb.Ex0802.prj mccExcludedFiles.log Ex0802.ctf Ex0802_main.c E
9、x0802.ilk Ex0802.exe Ex0802_mcc_component_data.c,8.1.2 使用MATLAB编译器,在Windows中进入DOS窗口,如图8.1(a)所示,运行“Ex0802.exe”文件,显示正弦波形如图8.1(b)所示。,8.2 低级文件输入/输出,8.2.1 打开和关闭文件1打开文件语法:fid=fopen(filename,permission)%以指定格式打开文件fid,message=fopen(filename,permission)%返回打开文件的信息2关闭文件打开文件进行读/写操作后,应立即关闭文件,删除文件指针,以免打开文件过多,造成混乱和
10、浪费。语法:status=fclose(fid)%关闭文件指针所指的文件status=fclose(all)%关闭所有打开的文件,8.2.1 打开和关闭文件,【例8.3】打开和关闭1个文本文件。文本文件“Ex0805.txt”,在MATLAB环境中显示的文件内容如下。type Ex0805.txta 1 2 3b 4 5 6使用fopen和fclose命令打开和关闭文件。fid,message=fopen(Ex0805.txt,w+)%打开文件读/写fid=3message=if fid=1disp(无法打开该文件)elsedisp(成功打开该文件)end成功打开该文件 status=fclo
11、se(fid)%关闭文件status=0,8.2.2 读/写格式化文件,1fscanf命令fscanf命令为读格式化文件数据。语法:a,count=fscanf(fid,format,size)%读取格式化数据【例8.3续】读取Ex0805.txt文件的前4个字符。fid=fopen(Ex0805.txt)fid=3 a1=fscanf(fid,%s,4)%以字符串格式读取4个数据a1=a123 fclose(fid)ans=0,8.2.2 读/写格式化文件,2fprintf命令fprintf命令用于写格式化数据。语法:count=fprintf(fid,format,a,)%写入格式化数据【
12、例8.4】使用Ex0805.txt文件进行读取和写入数据。,8.2.2 读/写格式化文件,3fgetl和fgets命令fgetl和fgets命令都是用来读取文件的下一行,并将该行的ASCII字符转换成为字符串。两者的差别是fgetl会舍去换行符,而fgets则保留换行符。语法:tline=fgetl(fid)%读取文件的下一行,不包括换行符tline=fgets(fid)%读取文件的下一行,包括换行符tline=fgets(fid,nchar)%限制读取文件字符个数,8.2.2 读/写格式化文件,【例8.4续】以行的形式读取Ex0805.txt文件。fid=fopen(Ex0805.txt,r
13、);%打开Ex0803.txt文件只读 fgetl(fid)%读取第1行数据ans=a 1 2 3 fgets(fid)%读取第2行数据ans=b 4 5 6 fgets(fid,10)%读取第3行数据,限制10个字符ans=%This is a fgets(fid,10)ans=example.,8.2.3 读/写二进制数据,1读数据fread命令为读二进制数据。语法:a,count=fread(fid,size,precision,skip)%读取二进制数据2写数据fwrite命令为写二进制数据。语法:count=fwrite(fid,a,precision,skip)%写二进制数据【例8
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- MATLAB 高级 应用
![提示](https://www.31ppt.com/images/bang_tan.gif)
链接地址:https://www.31ppt.com/p-6512200.html