MATLAB高级应用.ppt

上传人:牧羊曲112 文档编号:6512200 上传时间:2023-11-08 格式:PPT 页数:38 大小:2.48MB
返回 下载 相关 举报
MATLAB高级应用.ppt_第1页
第1页 / 共38页
MATLAB高级应用.ppt_第2页
第2页 / 共38页
MATLAB高级应用.ppt_第3页
第3页 / 共38页
MATLAB高级应用.ppt_第4页
第4页 / 共38页
MATLAB高级应用.ppt_第5页
第5页 / 共38页
点击查看更多>>
资源描述

《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

14、.5】写入数据到MAT文件中,并读取数据。,8.2.4 文件定位,1fseek命令fseek命令用来移动文件位置指针。语法:status=fseek(fid,offset,origin)%移动文件位置指针2ftell命令ftell命令用来获取文件位置指针的当前位置。语法:pos=ftell(fid)%获取当前指针位置3frewind命令frewind命令用来将文件位置指针移到文件的开头。语法:frewind(fid),8.2.4 文件定位,4feof命令feof命令用来测试位置指针是否在文件结束位置,如果是则返回1,否则返回0。语法:feof(fid)【例8.6】创建2个mat文件,在Ex08

15、08_1.mat文件中写入110的数据,并进行求和,在Ex0808_2.mat文件中写入1、2、3 3个数据,将第2个数据与前面所求的和进行相乘运算。程序保存在Ex0808.m文件中,程序代码。运行结果如下。s=110,8.3 Notebook,8.3.1 Notebook安装MATLAB的Notebook安装步骤比以前的版本容易得多,具体步骤如下。(1)启动MATLAB,出现MATLAB命令窗口。(2)在命令窗口中运行“notebook-setup”命令,出现如下提示。notebook setupWelcome to the utility for setting up the MATLAB

16、 Notebookfor interfacing MATLAB to Microsoft WordSetup complete,8.3.2 Notebook启动,1创建M-book文件创建M-book文件有2种方法:从Word中启动和从MATLAB命令窗口启动。(1)从Word中启动Notebook。当以默认方式打开Word时,所得到的Word窗口是按默认模板Normal.dot形式创建的。选择Word窗口的菜单“文件”“新建”命令,在出现的对话框中,选择“m-book.dot”图标,即如图8.2所示为“新建”对话框,单击“确定”按钮。,(2)从MATLAB中启动Notebook。在MATLA

17、B命令窗口输入“notebook”命令,就可以启动Notebook。语法:notebook%打开1个新的M-book文档notebook FileName%打开已存在的M-book文件例如,在命令窗口中打开已建立的M-book文件。notebook C:My DocumentsMyMbook0801.doc,8.3.2 Notebook启动,2M-book的界面M-book的界面比普通的Word多1个“Notebook”菜单。Notebook菜单如图8.3所示。,8.3.2 Notebook启动,其菜单项功能如表8.1所示。,8.3.3 Notebook使用,Notebook定义了几种格式用于

18、表示MATLAB的函数和命令,包括AutoInit、Calc、Error、Input、Nograph、Output,以及Word默认的格式。Notebook对常用各单元格式的默认设置如表8.2所示。,8.3.3 Notebook使用,1输入单元(1)只创建不运行输入单元。首先在英文状态下按普通的文本输入方式,输入MATLAB命令,可以是独立行或嵌在文本中,然后用光标选中,按【Alt+D】组合键,或选择菜单“Notebook”“Define Input Cell”命令,则所选中的文本形式命令就变成了输入单元。【例8.7】在M-book文件中创建输入单元(用黑框表示M-book中的输入文本)。在文

19、本中输入以下文字:利用:来生成向量,例如x=1:0.1:3;用光标选中“x=1:0.1:3;”文字,并按【Alt+D】组合键,则创建了输入单元,显示如下:利用:来生成向量,例如x=1:0.1:3;,8.3.3 Notebook使用,(2)创建并同时运行输入单元。首先在英文状态下按普通的文本输入方式,输入MATLAB命令,然后用光标选中,按【Ctrl+Enter】组合键,或选择菜单“Notebook”“Evaluate Cell”命令,则所选中的文本形式命令就会自动变成输入单元,并得出运算结果,即输出单元。【例8.7续】创建并运行输入单元。在文本中继续输入MATLAB命令:y=sin(x)用光标

20、选中“y=sin(x)”文字,并按【Ctrl+Enter】组合键,则创建并运行输入单元,显示如下。y=sin(x)y=Columns 1 through 7 0.8415 0.8912 0.9320 0.9636 0.9854 0.9975 0.9996Columns 8 through 14 0.9917 0.9738 0.9463 0.9093 0.8632 0.8085 0.7457Columns 15 through 21 0.6755 0.5985 0.5155 0.4274 0.3350 0.2392 0.1411,8.3.3 Notebook使用,2自动初始化单元自动初始化单元与

21、输入单元功能的唯一不同是:当用户启动1个M-book文件时,包含在该文件中的自动初始化单元会自动被送去运算。3单元组创建单元组的方法如下。(1)首先将多行文本形式的MATLAB命令用光标选中,然后选择菜单“Notebook”“Define Input Cell”命令或选择菜单“Notebook”“Define AutoInit Cell”命令。(2)首先将多行独立的输入单元或自动初始化单元同时选中,然后选择菜单“Notebook”“Group Cells”,就生成了第1个独立单元性质的单元组。,8.3.3 Notebook使用,【例8.7续】创建单元组。在M-book中输入以下文本:利用:来生

22、成向量,例如:x=1:0.1:3;y=sin(x)画出正弦波形:plot(x,y)选择所有的文本行,使用菜单“Notebook”“Group Cells”创建单元组如下。可以看到创建单元组后,中间“画出正弦波形”的文本内容移到单元组之后。利用:来生成向量,例如:x=1:0.1:3;y=sin(x)plot(x,y)画出正弦波形:,8.3.3 Notebook使用,4输出单元输出单元包含MATLAB的输出结果,即包括数据、图形和出错信息。输出单元是输入单元或单元组运算后产生的,总是紧跟在输入单元或单元组后。【例8.7续】运行单元组,查看输出单元。将单元组全部选中,按【Ctrl+Enter】组合键

23、,就出现如下的输出单元。利用:来生成向量,例如:x=1:0.1:3;y=sin(x)plot(x,y)y=Columns 1 through 7 0.8415 0.8912 0.9320 0.9636 0.9854 0.9975 0.9996 Columns 8 through 14 0.9917 0.9738 0.9463 0.9093 0.8632 0.8085 0.7457Columns 15 through 21 0.6755 0.5985 0.5155 0.4274 0.3350 0.2392 0.1411画出正弦波形。,8.3.3 Notebook使用,8.3.3 Notebook

24、使用,5计算区计算区(Calc Zone)是1个由文本、输入单元和输出单元组成的连续区,用于实现某个具体的问题。在计算区内,用户可根据需要安排段落、标题、格式和分栏等,而不受计算区外格式定义的限制。【例8.8】使用计算区实现分支结构。Ifelseend结构例:用 Ifelseend分支结构划分学生成绩为优、良、中、及格、不及格。x=100*rand(1);if x=90 score=优elseif x=80 score=良elseif x=70 score=中elseif x=60 score=及格else score=不及格end score=及格,8.3.3 Notebook使用,6取消定

25、义单元有时需要将定义的单元和单元组取消,即转换为普通文本,这样可以将单元变为固定的文本保存,而不会再运行。取消定义单元的方法是,首先选定单元,然后选择菜单“Notebook”“Undefine Cells”命令,或当光标置于单元中时按【Alt+U】组合键,则该单元可变成“Normal”样式的文本。,8.3.4 Notebook中的MATLAB使用,1工作内存的初始化M-book文件的所有计算变量都存放在MATLAB工作空间中,工作空间中的变量是由各M-book文件和MATLAB命令窗口共同产生的。2整个M-book文件的运行在菜单中选择“Notebook”“Evaluate M-book”命令

26、时运行整个M-book文件,即把文档中所有输入单元送到MATLAB中去运行,可以保证整个M-book文件中所有命令、数据和图形的一致性。,8.3.4 Notebook中的MATLAB使用,3输出单元的格式控制设置的方法为选择菜单“Notebook”“Notebook Options”命令,则出现如图8.4所示的对话框。,8.3.4 Notebook中的MATLAB使用,【例8.9】绘制三维peaks函数图形。选择菜单“Notebook”“Notebook Options”命令,将“Width”和“Height”的值都设置为2,输入如下文本,并用“Evaluate M-book”命令运行该文本,

27、则在M-book中显示三维peaks函数图形,如图8.5所示。绘制peaks函数的三维曲面图x,y,z=peaks;mesh(x,y,z),8.3.4 Notebook中的MATLAB使用,4单元的循环运行Notebook提供了循环运行单元的命令,首先选定需要循环运行的输入单元,然后选择菜单“Notebook”“Evaluate Loop”命令,就会出现如图8.6所示的“循环运行”对话框。,8.3.4 Notebook中的MATLAB使用,5删除M-book文件所有选中的输出单元在撰写报告或布置作业时,如果需要删除所有的输出单元,则可以选择菜单“Notebook”“Purge Selected output Cells”命令,将删除选中的所有输出单元。,

展开阅读全文
相关资源
猜你喜欢
相关搜索
资源标签

当前位置:首页 > 生活休闲 > 在线阅读


备案号:宁ICP备20000045号-2

经营许可证:宁B2-20210002

宁公网安备 64010402000987号