为了正常的体验网站,请在浏览器设置里面开启Javascript功能!

MATLAB教程(WORD版)第8章_MATLAB高级应用

2018-09-09 18页 doc 281KB 28阅读

用户头像

is_395049

暂无简介

举报
MATLAB教程(WORD版)第8章_MATLAB高级应用第8章MATLAB高级应用 8.1 MATLAB应用接口 8.1.1 MEX文件 MEX文件具有以下几个方面的应用: (1) 对于已存在的C或FORTRAN子程序,可以通过MEX文件在MATLAB环境中直接调用,而不必重新编写M文件。 (2) 由于MATLAB是解释性语言,运行如for等循环体时,会出现速度十分缓慢的现象,为了能提高速度,往往要使用MEX程序。 (3) 对于A/D、D/A卡,或其它PC硬件,可以直接用MEX文件进行访问。 (4) 利用MEX文件,可以使用如Windows用户图形界面等资源。 1. ME...
MATLAB教程(WORD版)第8章_MATLAB高级应用
第8章MATLAB高级应用 8.1 MATLAB应用接口 8.1.1 MEX文件 MEX文件具有以下几个方面的应用: (1) 对于已存在的C或FORTRAN子程序,可以通过MEX文件在MATLAB环境中直接调用,而不必重新编写M文件。 (2) 由于MATLAB是解释性语言,运行如for等循环体时,会出现速度十分缓慢的现象,为了能提高速度,往往要使用MEX程序。 (3) 对于A/D、D/A卡,或其它PC硬件,可以直接用MEX文件进行访问。 (4) 利用MEX文件,可以使用如Windows用户图形界面等资源。 1. MEX文件系统设置 下面采用Microsoft Visual C/C++ 6.0编译器,在命令窗口使用“mex -setup”命令,对MEX文件编译器进行配置: >> mex -setup 则会出现如下提示: Please choose your compiler for building external interface (MEX) files: Would you like mex to locate installed compilers [y]/n? y 让用户选择是否同意mex命令自动定位已经安装的编译器,输入“y”后,回车出现如下提示: Select a compiler: [1] Digital Visual Fortran version 6.0 in C:\Program Files\Microsoft Visual Studio [2] Lcc C version 2.4 in D:\MATLAB6P1\sys\lcc [3] Microsoft Visual C/C++ version 6.0 in D:\Program Files\Microsoft Visual Studio [0] None 提供用户选择编译器作为默认的MEX文件编译器,通过键盘输入“3”后,回车出现如下提示: Please verify your choices: Compiler: Microsoft Visual C/C++ 6.0 Location: D:\Program Files\Microsoft Visual Studio Are these correct?([y]/n): 确认所选择的编译器,通过键盘输入“y”后,回车出现如下提示: The default options file: "D:\Documents and Settings\ZJDCY\Application Data\MathWorks\MATLAB\R12\mexopts.bat" is being updated from D:\MATLAB6P1\BIN\WIN32\mexopts\msvc60opts.bat... Installing the MATLAB Visual Studio add-in ... Updated D:\Program Files\Microsoft Visual Studio\common\msdev98\template\MATLABWizard.awx from D:\MATLAB6P1\BIN\WIN32\MATLABWizard.awx Updated D:\Program Files\Microsoft Visual Studio\common\msdev98\template\MATLABWizard.hlp from D:\MATLAB6P1\BIN\WIN32\MATLABWizard.hlp Updated D:\Program Files\Microsoft Visual Studio\common\msdev98\addins\MATLABAddin.dll from D:\MATLAB6P1\BIN\WIN32\MATLABAddin.dll Merged D:\MATLAB6P1\BIN\WIN32\usertype.dat with D:\Program Files\Microsoft Visual Studio\common\msdev98\bin\usertype.dat 则表示编译器成功配置。 2. 测试配置 在MATLAB环境的当前目录浏览器窗口中,将MATLAB的extern\examples\mex目录设置为当前目录,然后在命令窗口中输入: mex yprime.c 则在extern\examples\mex目录下,就生成了“yprime.dll”文件,查看该yprime.dll文件的信息,在命令窗口中输入: >> which yprime D:\MATLAB6p1\extern\examples\mex\yprime.dll 并调用yprime.dll文件: >> yprime(1,1:2:7) ans = 3.0000 14.9925 7.0000 -1.0377 3. C语言MEX文件的构成 程序的构成主要由入口子程序和计算功能子程序两部分组成。 (1) 入口子程序 第一部分入口子程序的作用是在MATLAB系统与被调用的外部子程序之间建立通信联系。入口子程序必须是mexFunction,其构成形式为: void mexFunction( int nlhs, mxArray *plhs[], int nrhs, const mxArray*prhs[] ) { /*用来完成MATLAB与计算子程序之间通信任务的代码*/ } mexFunction函数的参数含义为: · nrhs:为输入参数的数目。 · prhs:为输入参数数组,是指针数组。 · nlhs:为输出参数的数目。 · plhs:为输出参数数组,是指针数组。 (2) 计算功能子程序 第二部分为计算功能子程序,包含所有的实际需要完成的功能源代码,可以是用户以前所编写的算法和程序,以函数的形式存在。 4. C语言MEX文件的建立 (1) 常用MATLAB API函数 在MEX文件中,常用MATLAB API函数有: · mxGetM:获得矩阵的行数。 · mxGetN:获得矩阵的列数。 · mxGetPr:获得矩阵的实数部分的数据指针。 · mexErrMsgTxt:输出错误信息,并返回到MATLAB命令提示符下。 · mxCreateString:创建一个字符串矩阵。 · mxCreateDoubleMatrix:创建一个二维未赋值的双精度浮点类型的矩阵。 · mxIsDouble:判断矩阵是否为双精度类型。 (2) C语言MEX文件的创建步骤 通过创建计算一个数平方倒数值的程序,来介绍一个MEX文件创建的过程。 【例8.1】在Microsoft Visual C++6.0环境下创建一个MEX文件,实现计算一个数平方的倒数值。 · 在Microsoft Visual C++6.0环境创建一个“C++ Source File”文件,文件名为“Ex0801.cpp”。 · 编写该文件的程序代码如下: #include "mex.h" #include "math.h" /*计算功能子程序Ex0801,计算平方的倒数*/ void Ex0801(double y[],double x[]) { y[0]=1/(x[0]*x[0]); return; } /*入口子程序mexFunction*/ void mexFunction(int nlhs,mxArray *plhs[],int nrhs,const mxArray *prhs[]) { double *x,*y; unsigned int m,n; /*检查输入变量的个数是否正确*/ if(nrhs!=1) { mexErrMsgTxt("Only one input argument allowed."); } /*检查输出变量的个数是否正确*/ else if(nlhs!=1){ mexErrMsgTxt("Only one output argument allowed."); } m = mxGetM(prhs[0]); n = mxGetN(prhs[0]); /*检查输入变量必须是非复数单个双精度数*/ if (!mxIsDouble(prhs[0]) || mxIsSparse(prhs[0]) ||mxIsComplex(prhs[0])|| ! (m==1&&n==1)) { mexErrMsgTxt("Input argument must be a scalar."); } /*创建矩阵变量为输出变量*/ plhs[0]=mxCreateDoubleMatrix(m,n,mxREAL); y = mxGetPr(plhs[0]); x = mxGetPr(prhs[0]); /*调用计算功能子程序*/ Ex0801(y,x); } · 在MATLAB命令窗口的当前目录浏览器中将当前目录设置为用户的目录,输入命令创建MEX文件并运行: mex Ex0801.cpp >> y=Ex0801(2) y = 0.2500 扩展名为cpp是C++文件,在其同一文件夹中生成Ex0801.dll文件,运行Ex0801.dll文件的运算结果正确。 · 为该文件添加帮助M文件 为了在MATLAB中可以方便地查看该Ex0801.dll文件的帮助信息,可以建立一个Ex0801.M文件,并输入以下内容: %function y=Ex0801(x) %计算一个数平方的倒数值 % y=1/(x^2) % copyright @ 2003-10-10 则在MATLAB命令窗口中,用help命令只能看到M文件来查看帮助信息: >> help Ex0801 function y=Ex0801(x) 计算一个数平方的倒数值 y=1/(x^2) copyright @ 2003-10-10 8.1.2 使用MATLAB编译器生成MEX和EXE文件 1. MEX文件与EXE文件的区别 MEX文件只能在MATLAB环境中运行;而EXE文件是可以独立与MATLAB环境运行的。 2. 配置编译器的准备 如果要创建MEX文件,如图8.1所示。则只需勾选“MATLAB Compiler”;如果要创建EXE文件,则需要勾选如图中的三个选项。 3. 由M文件创建C MEX文件 利用MATLAB编译器来由M文件创建MEX文件,使用“mcc –x”命令,。 【例8.2】在MATLAB环境中创建一个M函数文件,用来绘制正弦信号波形。 在MATLAB的编辑/调试窗口中创建一个Ex0802.m函数文件,编写程序代码如下: function Ex0802 % Ex0802 绘制正弦信号波形 x=0:0.1:2*pi; y=sin(x); plot(x,y) 保存文件,在MATLAB命令窗口中由该M文件创建MEX文件: >> mcc -x Ex0802 %创建Ex0802.dll文件 >> Ex0802 %运行Ex0802.dll文件 运行该Ex0802.dll文件,绘制出正弦信号波形图。在该目录下,可以看到在创建dll文件的同时,还创建了Ex0802.c、Ex0802.h和Ex0802_mex.c文件。 注意:如果上述的Ex0802.m文件删除第一行,变为M脚本文件,则用mcc命令直接编译会出错,并出现如下提示: >> mcc -x Ex0802 ??? Error: Cannot create MEX File "Ex0802" from MEX File "C:\My Documents\CAOYi\BookMATLAB\20031008\exe\Ex0802.dll". Error in ==> D:\MATLAB6p1\toolbox\compiler\mcc.dll 4. 创建独立的外部程序EXE文件 【例8.3】第一次使用mbuild命令由C文件创建EXE文件。 由“matlab\extern\examples\cmath”目录下的现成文件“ex1.c”,创建独立的EXE文件。 先将“matlab\extern\examples\cmath”目录设置为当前目录,然后输入mbuild命令,由于系统中安装了LCC和Microsoft Visual C/C++两个编译器,则MATLAB会提示用户选择默认的编译器: >> mbuild ex1.c Please choose your compiler for building standalone MATLAB applications: Would you like mbuild to locate installed compilers [y]/n? y 选择一个默认的编译器 Select a compiler: [1] Lcc C version 2.4 in D:\MATLAB6P1\sys\lcc [2] Microsoft Visual C/C++ version 6.0 in D:\Program Files\Microsoft Visual Studio [0] None Compiler: 2 …… 后面就会出现提示和确认的信息。 如果要改变默认的编译器,则需要使用“mbuild -setup”命令重新选择。 (1) mbuild命令由C文件生成EXE文件 【例8.3续】用mbuild命令由C文件编译生成EXE文件。 使用mbuild命令可以由“ex1.c”文件创建独立的可执行文件: >> mbuild ex1.c 则产生了“ex1.exe”文件,可以脱离MATLAB独立运行,同时在同一目录下还产生了“bin”文件夹。 (2) mcc命令由M文件生成EXE文件 【例8.4】用mcc命令由【例8.2】中的M文件编译生成EXE文件。 >> mcc -B sglcpp Ex0802.m %创建需要图形库的C++独立应用程序 如果不希望MCC自动调用mbuild,可以添加使用“-c”选项,如命令“mcc -mc”和“mcc -pc”。 8.2 低级文件的输入输出 8.2.1打开和关闭文件 1. 打开文件 语法: fid = fopen(filename,permission) %以指定格式打开文件 [fid,message] = fopen(filename,permission) %返回打开文件的信息 说明:fid为返回的文件指针(File Identifier),通常是一个非负的整数,如果返回-1,则表示无法打开文件;message用来显示打开文件的信息,如果无法打开,则显示错误信息;filename为文件名,是字符串,如果文件不在MATLAB的搜索路径中,则需要指定文件路径;permission为指定文件的打开模式,有以下几种模式: · 'r':只读文件 · 'r+':读写文件 · 'w':删除已存在文件内容或建立新文件,并只写文件 · 'w+':删除已存在文件内容或建立新文件,并读写文件 · 'a':以只写方式建立并打开一个新文件或打开一个已存在的文件,只能在文件末尾添加内容 · 'a+':以读写方式建立并打开一个新文件或打开一个已存在的文件,在文件末尾添加内容 fopen的permission参数在打开文件时还可标明文件格式,如果打开文本格式文件,在后添加字母“t”,如果打开二进制格式文件,则在permission参数后添加字母“b”,如'wb'、'rb+'等。 2. 关闭文件 打开文件进行读写操作后,应立即关闭文件,删除文件指针。 语法: status=fclose(fid) %关闭文件指针所指的文件 status=fclose('all') %关闭所有打开的文件 说明:status为关闭文件指针所指文件的状态,如果成功则返回0,如果失败则返回-1;fid为所打开的文件指针。 【例8.5】打开和关闭一个文本文件。 文本文件“Ex0805.txt”,在MATLAB环境中显示的文件内容如下: type Ex0805.txt a 1 2 3 b 4 5 6 使用fopen和fclose命令打开和关闭文件: [fid,message]=fopen('Ex0805.txt','w+') %打开文件读写 fid = 3 message = '' if fid==-1 disp('无法打开该文件') else disp('成功打开该文件') end 成功打开该文件 status=fclose(fid) %关闭文件 status = 0 8.2.2读写格式化文件 1. fscanf命令 fscanf命令为读格式化文件数据。 语法: [a,count]=fscanf(fid,format,size) %读取格式化数据 说明:fid为文件指针,所指为需要读取的格式化文件;format指定读取数据格式,指定的格式必须和文件中的数据格式相同,否则读取的数据可能会出现错误,以“%”开头,有%c、%d、%e、%f、%g、%i、%o、%s、%u、%x等(与C语言相同);count为成功读取的数据元素个数,可省略;a返回读取的数据;size为需要读取的数据个数,如果省略,则读到文件末尾,size的取值可以有: · n:读n个数据到一个列向量 · inf:读到文件末尾,数据放到一个列向量 · [m,n]:读出的数据个数为m×n,数据放到矩阵中,读出的数据按列的顺序填充矩阵,不够的数据用0填补。 【例8.5续】读取Ex0805.txt文件的前四个字符。 fid=fopen('Ex0805.txt') fid = 3 a1=fscanf(fid,'%s',4) %以字符串格式读取四个数据 a1 = a123 fclose(fid) ans = 0 2. fprintf命令 fprintf命令为写格式化数据。 语法: count=fprintf(fid,format,a,…) %写入格式化数据 说明:fid为文件指针,所指为二进制文件;a为矩阵数据,将a写到fid指向的文件;format为写入的格式,除了包含fscanf命令的数据格式之外,还有%E、%G、%X,并具有对齐格式-(左对齐)、+(右对齐)、0(补齐位数),还有转义字符;count为成功写入数据的个数。 【例8.6】使用Ex0805.txt文件进行读取和写入数据。 a='%This is a example.'; fid=fopen('Ex0805.txt','a+') %打开Ex0803.txt文件在末尾添加 fid = 3 fprintf(fid,'%s',a) %写入a到文件末尾 ans = 19 fclose(fid) %关闭文件 ans = 0 fid=fopen('Ex0805.txt','r') %打开Ex0803.txt文件只读 fid = 3 fscanf(fid,'%s') %读取文件所有内容 ans = a123b456%Thisisaexample.%Thisisaexample.%Thisisaexample.%Thisisaexample. fclose(fid) ans = 0 程序分析:在向文件中写入数据后,先关闭文件,然后再打开文件则从文件开头读取数据,如果写完数据后直接读取数据,则实际读取数据的位置将从写入的最后一个数据之后开始。 3. fgetl和fgets命令 fgetl和fgets命令都是用来读取文件的下一行,两者的差别是fgetl会舍去换行符,而fgets则保留换行符。 语法: tline=fgetl(fid) %读取文件的下一行,不包括换行符 tline=fgets(fid) %读取文件的下一行,包括换行符 tline=fgets(fid,nchar) %限制读取文件字符个数 说明:fid为文件指针;tline为以字符串形式的返回值,如果到文件末尾则返回-1;nchar为最多返回的字符个数。 【例8.6续】以行的形式读取Ex0805.txt文件。 fid=fopen('Ex0805.txt','r') ; %打开Ex0803.txt文件只读 fgetl(fid) %读取第一行数据 ans = a 1 2 3 fgets(fid) %读取第二行数据 ans = b 4 5 6 fgets(fid,10) %读取第三行数据,限制10个字符 ans = %This is a fgets(fid,10) ans = example.% 8.2.3读写二进制数据 fread命令为读二进制数据。 语法: [a,count]=fread(fid,size,precision,skip) %读取二进制数据 说明:fid为文件指针;size与fscanf命令含义相同;precision为一个字符串,用来指定读取数据的精度,即数据类型,有'uchar'、'schar'、'int8'、'int16'、'int32'、'int64'、'unit8'、'unit16'、'unit32'、'unit64'、'single'、'float32'、'double'、'float64'等,可省略;a为矩阵数据;count为成功读取的数据元素个数,可省略;skip为每读取一个数据后跳过的字节数,可省略。 2. 写数据 fwrite命令为写二进制数据。 语法: count=fwrite(fid,a,precision,skip) %写二进制数据 说明:fid为文件指针;a为矩阵数据;precision和skip参数含义与fread命令相同;count为成功写入数据的个数。 【例8.7】写入数据到MAT文件中,并读取数据。 x1=1:10; [fid,message]=fopen('Ex0805.mat','a') %打开文件添加数据 fid = 4 message = '' count1=fwrite(fid,x1) %写入数据 count1 = 10 x2=11:15; count2=fwrite(fid,x2) %添加数据 count2 = 5 status=fclose(fid); fid=fopen('Ex0805.mat','r'); %打开文件只读 a1=fread(fid,[2,5]) %读取数据 a1 = 1 3 5 7 9 2 4 6 8 10 a2=fread(fid,[1,5]) a2 = 1 2 3 4 5 fclose(fid); 8.2.4文件定位 1. fseek命令 fseek命令用来移动文件位置指针。 语法: status=fseek(fid,offset,origin) %移动文件位置指针 说明:fid为文件指针;offset指定移动的字节数,如果offset >0,则向后移动,否则向前移动,等于0则不移动;status为返回值,如果移动成功则返回0,否则返回-1;origin指定移动位置指针的参考起点: · 'bof' 或-1:文件的开头 · 'cof' 或0:文件的当前位置 · 'eof' 或1:文件的末尾。 2. ftell命令 ftell命令是用来获取文件位置指针的当前位置。 语法: pos=ftell(fid) %获取当前指针位置 说明:pos指字节数,当前位置指针指在此字节数之后。 3. frewind命令 frewind命令用来将文件位置指针移到文件的开头。 语法: frewind(fid) 4. feof命令 feof命令用来测试位置指针是否在文件结束位置,如果是则返回1,否则返回0。 语法: feof(fid) 【例8.8】创建两个mat文件,在Ex0808_1.mat文件中写入1~10的数据,并进行求和,在Ex0808_2.mat文件中写入1、2、3三个数据,将第二个数据与前面所求的和进行相乘运算。 程序保存在Ex0808.m文件中,程序代码如下: % Ex0808 文件读取和定位 x=1:10; s=0; fid1=fopen('Ex0808_1.mat','w+') %打开文件读写数据 fwrite(fid1,x); %写入数据 frewind(fid1); %指针移到文件开头 while feof(fid1)==0 %判断是否到文件末尾 a1=fread(fid1,1) %读取数据 if isempty(a1)==0 %判断是否为空值 s=a1+s %求和 end end fclose(fid1); y=[1 2 3]; fid2=fopen('Ex0808_2.mat','w+') %打开文件读写数据 fwrite(fid2,y) %写入数据 fseek(fid2,-2,'eof') %指针移动到第二个数据 a2=fread(fid2,1) %读取数据 s=s*a2 fclose(fid2); 运行结果得出: s = 110 程序说明: · 使用文件位置控制就可以不用反复打开和关闭文件,而直接从文件中读写数据。 · 使用while循环结构,从文件中读取数据,直到文件末尾。 · 当文件位置指针移动到文件最后时,取出的数据为空值,但feof函数返回0,因此用isempty函数判断是否为空值来判断是否到文件最后,文件指针再向下移则到文件末尾,feof函数返回1。 · “fseek(fid2,-2,'eof')”语句是将文件位置指针从末尾向前2个数据。 8.3 图形文件的转储 MATLAB生成的图形文件为.fig文件格式,有时需要将图形文件转储为多种常用的格式,如tif、bmp、jpg等。选择菜单“File”(“Export”命令,则在出现的“Export”对话框中,在“保存类型”栏选择需要转储的图形文件类型,如图8.2所示。 8.4 Notebook 8.4.1 Notebook的安装 MATLAB 6.5的Notebook安装步骤如下: (1) 启动MATLAB,出现MATLAB命令窗口。 (2) 在命令窗口中运行“notebook -setup”命令 出现如下提示: >> notebook -setup Welcome to the utility for setting up the MATLAB Notebook for interfacing MATLAB to Microsoft Word Choose your version of Microsoft Word: [1] Microsoft Word 97 [2] Microsoft Word 2000 [3] Microsoft Word 2002 (XP) [4] Exit, making no changes Microsoft Word Version: (3) 根据自己机器上所用Word的版本,在提示的冒号后填写数值,如“2”,并按回车键。 则出现以下提示,表示Notebook安装结束。 Notebook setup is complete. 如果安装程序不能找到所需的文件,则也会提示用户指定“winword.exe”和“normal.exe”文件的路径。 8.4.2 Notebook的启动 1. 创建M-book文件 (1) 从Word中启动Notebook 创建M-book文件的步骤如下: 选择Word窗口的菜单“文件”(“新建”,在出现的对话框中,选择“m-book.dot”图标,如图8.3所示的为Word2000的新建对话框,按“确定”按钮。当保存文件时,默认的文件名为“The MATLAB Notebook v1.doc”。 (2) 从MATLAB中启动Notebook 在MATLAB命令窗口输入“notebook”命令,就可以启动Notebook。 语法: notebook  %打开一个新的M-book文档 notebook FileName  %打开已存在的M-book文件 说明:FileName应包括文件的完整路径和文件名。 例如,在命令窗口中打开已建立的M-book文件: >> notebook 'C:\My Documents\MyMbook0801.doc' 2. M-book的界面 M-book的界面比普通的Word多一个“Notebook”菜单,Notebook菜单项如图8.4所示。 其菜单项功能如表8.1所示。 表8.1 Notebook菜单项功能表 下拉菜单 组合键 功能 Define Input Cell Alt+I 定义输入单元 Define AutoInit Cell Alt+A 定义自动初始化单元 Define Calc Zone Alt+Z 定义计算区 Undefine Cells Alt+U 将单元转换为文本 Purge Output Cells Alt+P 清除输出单元 Group Cells Alt+G 定义单元组 Ungroup Cells Alt+p 将单元组转换为单个单元 Hide/Show Cell Markers Alt+C 隐藏/显示单元标志 Toggle Graph Output for cell 为每个单元锁定图形输出 Evaluate Cell Ctrl+Enter 运行当前单元或单元组 Evaluate Calc Zone Alt+Enter 运行当前计算区 Evaluate M-book Alt+M 运行M-book中所有单元 Evaluate Loop Alt+L 循环运行单元 Bring MATLAB to front 将MATLAB置于屏幕之前 Notebook Options… Alt+O 定义输出显示选项 8.4.3 Notebook的使用 Notebook定义了几种格式来表示MATLAB的函数和命令,包括AutoInit、Calc、Error、Input、Nograph、Output以及Word默认的格式。Notebook对常用各单元格式的默认设置见表8.2所示。 表8.2 M-book各单元样式 样式名 含义 字体 Input 输入单元 10磅 (points)深绿色英文粗体Courier New Output 输出单元(数据和字符) 10磅(points)蓝色英文细体Courier New AutoInit 自动初始化单元 10磅(points)深蓝色英文粗体Courier New Error 出错提示 10磅(points)深红色英文粗体Courier New 1. 输入单元 (1) 只创建不运行输入单元 在英文状态下按普通的文本输入方式,输入MATLAB命令,可以是独立行或嵌在文本中,然后用光标选中,按组合键“Alt-D”,或选择菜单“Notebook”——“Define Input Cell”,则所选中的文本形式命令就变成了输入单元。 【例8.9】在M-book文件中创建输入单元(用黑框表示M-book中的输入文本)。 在文本中输入以下文字: 利用:来生成向量,例如x=1:0.1:3; 用光标选中“x=1:0.1:3;”文字,并按组合键“Alt-D”,则创建了输入单元显示如下: 利用:来生成向量,例如x=1:0.1:3; (2) 创建并同时运行输入单元 在英文状态下按普通的文本输入方式,输入MATLAB命令,然后用光标选中,按组合键“Ctrl-Enter”,或选择菜单“Notebook”——“Evaluate Cell”,则所选中的文本形式命令就会自动变成输入单元,并得出运算结果,即输出单元。 【例8.9续】创建并运行输入单元。 在文本中继续输入MATLAB命令: y=sin(x) 用光标选中“y=sin(x)”文字,并按组合键“Ctrl-Enter”,则创建并运行输入单元,显示如下: 程序分析:其中的“x”的值来自MATLAB的工作空间,M-book文件和MATLAB命令窗口共享一个工作空间;如果在命令“y=sin(x)”后加分号,则不以输出单元显示运行结果。 2. 自动初始化单元 创建自动初始化单元的方法是先将文本形式的MATLAB命令或已存在的输入单元用光标选中,然后选择菜单“Notebook”——“Define AutoInit Cell”,则选中的文本形式MATLAB命令就会自动变成AutoInit 格式。 3. 单元组 创建单元组的方法: (1) 将多行文本形式MATLAB命令用光标选中,然后选择菜单“Notebook”——“Define Input Cell”或“Notebook”——“Define AutoInit Cell”。 (2) 将多行独立的输入单元或自动初始化单元同时选中,然后选择菜单“Notebook”——“Group Cells”,就生成了第一个独立单元性质的单元组。 【例8.9续】创建单元组。 在M-book中输入以下文本: 选择所有的文本行,使用菜单“Notebook”——“Group Cells”创建单元组如下: 可以看到创建单元组后,中间“画出正弦波形”的文本内容移到单元组之后。 4. 输出单元 输出单元包含MATLAB的输出结果,包括数据、图形和出错信息。 【例8.9续】运行单元组,查看输出单元。 将单元组全部选中,按组合键“Ctrl-Enter”,就出现输出单元如下: 输出单元为y数值和图形,输出单元也用“[]”标志,输入单元组的运行结果也是输出单元组。 5. 计算区 【例8.10】使用计算区实现分支结构。 在Word文档中输入如下所有文本,选择菜单“Notebook”(“Define Calc Zone”,将所有文本定义为计算区,出现分节符;然后选定程序,再选择菜单“Notebook”(“Define Input Cell”,将程序定义为输入单元;光标在计算区中时,单击鼠标右键选择菜单“Notebook”(“Evaluate Calc Zone”,得出输出单元。 程序分析:在计算区中,输入单元和输出单元分别用“[]”包括,分节符在计算区的首尾。 6. 取消定义单元 取消定义单元的方法是,先选定单元,然后选择菜单“Notebook”——“Undefine Cells”,或当光标置于单元中时按“Alt-U”按钮,则该单元就变成“Normal”样式的文本。 8.4.4 Notebook中MATLAB的使用 1. 工作内存的初始化 为了避免其它文件或命令窗口中变量的改变影响该文件,保证文件输入输出数据的一致性,可以用“clear”命令作为该文件的第一个自动初始化单元。 2. 整个M-book文件的运行 菜单“Notebook”——“Evaluate M-book”是运行整个M-book文件,即把文档中所有输入单元送到MATLAB中去运行。 3. 输出单元的格式控制 设置的方法为选择菜单“Notebook”——“Notebook Options…”,则出现如图8.5所示对话框。 (1) 输出数据的格式控制 在图8.5中的“Numeric Format”选项栏中,可以设置输出数据的格式,共有8种:“Short”、“Long”、“Hex”、“Bank”、“Plus”、“Shorte”、“Rational”。 (2) 输出数据间的空行控制 图8.5所示对话框中的“Loose”和“Compact”单选按钮是用来控制输入单元与输出单元之间的空白区间。 (3) 图形的嵌入控制 “Embed Figures in M-book”复选框是用来决定输入单元中的绘图命令是否向M-book文档输出图形。 (4) 嵌入图形的大小控制 通过对图8.5的“Figure Options”框中的三个栏目“Units”、“Width”、“Height”的设置,可以控制嵌入图形的大小。“Units”有三个选项:Inches、Centimeters和Points。 (5) 嵌入图形的打印输出控制 (6) 嵌入图形的背景色控制 在默认情况下,正常嵌入Word的图形背景色应是“灰/白”的。 如果所嵌入的图形出现“灰/黑”背景色,可采取以下两种措施: · 打开“Notebook Options”对话框,将“Embed Figures in M-book”复选框置于“选中”状态,单击“OK”按钮,然后重新运行输入单元。 · 在MATLAB命令窗口中,运行以下命令: 【例8.11】绘制三维peaks函数图形。 选择菜单“Notebook”——“Notebook Options…”,将“Width”和“Height”都设置为2,输入如下文本,并用“Evaluate M-book”命令运行该文本,则在M-book中显示如下图形: 4. 单元的循环运行 Notebook提供了循环运行单元的命令,先选定需要循环运行的输入单元,然后选择菜单“Notebook”——“Evaluate Loop”,就会出现如图8.6所示的对话框。 5. 删除M-book文件所有选中的输出单元 当在撰写报告或布置作业时,如果需要删除所有的输出单元,可以选择菜单“Notebook”——“Purge Selected output Cells”,则会删除选中的所有输出单元。 图8.6 循环运行对话框 绘制peaks函数的三维曲面图[x,y,z]=peaks; mesh(x,y,z) � 图8.5 Notebook Options对话框 1. If…else…end结构 例:用 If…else…end分支结构划分学生成绩为优、良、中、及格、不及格。 x=100*rand(1); if x>=90 score='优' elseif x>=80 score='良' elseif x>=70 score='中' elseif x>=60 score='及格' else score='不及格' end score = 及格 利用:来生成向量,例如: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.7457 Columns 15 through 21 0.6755 0.5985 0.5155 0.4274 0.3350 0.2392 0.1411 � 画出正弦波形: 利用:来生成向量,例如:x=1:0.1:3; y=sin(x) plot(x,y) 画出正弦波形: 利用:来生成向量,例如:x=1:0.1:3; y=sin(x) 画出正弦波形: plot(x,y) y=sin(x) 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.7457 Columns 15 through 21 0.6755 0.5985 0.5155 0.4274 0.3350 0.2392 0.1411 图8.4 Notebook菜单 图8.3 新建word文件对话框 图8.2 “Export”对话框 图8.1 安装MATLAB对话框
/
本文档为【MATLAB教程(WORD版)第8章_MATLAB高级应用】,请使用软件OFFICE或WPS软件打开。作品中的文字与图均可以修改和编辑, 图片更改请在作品中右键图片并更换,文字修改请直接点击文字进行修改,也可以新增和删除文档中的内容。
[版权声明] 本站所有资料为用户分享产生,若发现您的权利被侵害,请联系客服邮件isharekefu@iask.cn,我们尽快处理。 本作品所展示的图片、画像、字体、音乐的版权可能需版权方额外授权,请谨慎使用。 网站提供的党政主题相关内容(国旗、国徽、党徽..)目的在于配合国家政策宣传,仅限个人学习分享使用,禁止用于任何广告和商用目的。

历史搜索

    清空历史搜索