第1部分 MATLAB基础知识
第1章 MATLAB概述
本章包括
◆ MATLAB的安装
◆ MATLAB的工作环境
◆ MATLAB的常见命令
◆ MATLAB的帮助系统
MATLAB是由MATRIX和LABORATORY两个英文单词的前3个字母组合而成的。最初版本的MATLAB出现在20世纪70年代,由FORTRAN语言编写,主要功能是实现程序库的接口功能。在20世纪90年代,MATLAB已经发展成为国际公认的标准计算软件,在数值计算方面功能十分强大,从这个时候起,MATLAB的内核就采用C语言编写,增加了数据视图功能。在MATLAB推向市场之后,由于软件良好的开放性和运行的可靠性,淘汰了该行业其他各种软件,许多工作开始在MATLAB平台上重建。
1.1 MATLAB 7简介
MATLAB从第1个版本到第14个版本MATLAB 7.0(ReIease 14),软件本身已经有了很大的改善,下面简要对这些内容进行介绍。
◆ 开发环境:在MATLAB 7.0中,用户可以同时使用多个文件和图形窗口,可以根据自己的习惯和喜好来定制桌面环境,同时还可以为自己定义常用的快捷键。
◆ 代码开发:支持函数嵌套、有条件中断点,可以使用匿名函数定义单行函数。
◆ 数值处理:在最新的版本中,单精度算法、线性代数可以方便用户处理更大的单精度数据,ODE可以求解泛函数,操作隐式差分等式和求解多项式边界值问题。
◆ 数据可视化:提供了新的绘图界面窗口,可以不输入M函数代码而直接在界面窗口中交互性地创建并编辑图形,同时可以直接从图形窗口中创建对应的M代码文件。
◆ 文件I/O和外部应用程序接口:支持读入更大的文本文件,支持压缩格式的MAT文件,可以动态加载、删除或者重载Java类,支持COM用户接口等。
1.2 MATLAB 7的安装
MATLAB是一个功能强大的数学工具软件,只有在适当的系统环境中才能正常运行。相对于MATLAB 7之前的几个版本,MATLAB 7在安装时给用户提供了更为个性化的条件。本节将介绍MATLAB 7在PC机的Windows操作系统中的典型安装方法。
注意
本节只介绍MATLAB 7在Windows操作系统中的安装方法,但是,MATLAB 7本身适合于许多机型和操作系统,例如Macintosh和UNIX工作站等。在本书的后面章节中,如果没有特别说明,所有的操作都是在Windows XP操作系统下的MATLAB 7中进行的。
在一般情况下,当用户将MATLAB的安装光盘插入光驱后,会自动启动“安装向导”。如果向导没有自动启动,可以打开安装光盘中的setup.exe应用程序,启动安装向导。
在安装过程中出现的所有界面都是标准界面,用户只需按照界面中的提示进行操作,输入用户名、单位名以及软件产品的序列号等。由于MATLAB 7的安装界面相对于MATLAB之前的版本有了较大改变,下面主要介绍几个明显改变的地方。
首先,用户需要在“InstaIIation Type”对话框中选择“Custom”单选按钮才能自行选择软件安装的组件和目录等,如图1-1所示。
图1-1 选择自定义安装选项
当选择了“Custom”单选按钮后,单击“Next”按钮,就会出现MATLAB安装选项的界面,即“Product and FoIder SeIection”对话框,可以在该对话框中选择需要安装的组件,如图1-2所示。
图1-2 选择MATLAB组件界面
在“Product and FoIder SeIection”对话框的上面选框中,需要选择MATLAB软件的安装位置和软件的名称。可以使用任意名称,同时也可以将MATLAB软件安装在硬盘中的任何位置。单击该对话框中的“Browse”按钮,选择相应的安装路径,也可以直接在选框中输入安装路径名称。
提示
在默认情况下,系统会将MATLAB安装在系统盘中,可以使用该默认安装路径。但是,由于MATLAB本身所占空间和资源较大,同时,经常使用MATLAB软件,会产生很多的临时文件,这将给系统盘增加负担。因此,建议将MATLAB安装在其他磁盘中。
在对话框的“SeIect products to instaII”列表框中,需要选择MATLAB软件的安装组件。可以直接勾选相应的组件,进行安装。默认情况下,系统会选中所有的组件,但是,对于一般的用户而言,很多组件的专业性过强,没有安装的必要。所以,用户应该根据自己的需要选择安装的组件。
为了帮助读者了解组件的构成,下面给出比较典型的组件组合方式,如表1-1所示。
表1-1 MATLAB的安装组件
技巧
一般来讲,随着用户对MATLAB使用的深入,可能随时需要安装新的工具箱。如果这个工具箱在安装光盘中已经包括了,可以再次使用光盘进行安装。如果该工具箱是新增的,可以访问Mathworks公司的官方网站,单独下载工具箱的安装文件。
当选择了MATLAB的安装组件后,单击组件选择界面中的“Next”按钮,就会出现使用选项的界面,可以在界面中选择MATLAB的使用选项,如图1-3所示。
图1-3 MATLAB选项界面
在MATLAB选项界面的上部,MATLAB为用户设置软件的密码。如果选中该复选框,则可以设置操作密码。其他用户只能读取MATLAB的所有相关文件,而不能编辑其中任何文件。当用户使用的操作系统是多人共用的时,为了保护自行设置和编辑的MATLAB文件,建议选中该复选框。
在该界面的中部,可以选择为MATLAB添加快捷方式的位置。系统提供了三个位置:桌面、“开始”菜单和快速启动栏。可以根据需要选择添加的位置,一般建议选中“Desktop”和“Programs foIder on the Start Menu”复选框。这样,可以很方便地启动MATLAB。
在该界面的底部,可以选择和MATLAB关联的文件扩展名。当选中相应的文件扩展名后,在默认的情况下,系统会使用MATLAB打开这些扩展名的文件。
1.3 MATLAB 7的工作环境
在将MATLAB安装到相应的硬盘上之后,可以启动MATLAB,查看MATLAB的工作环境。
在一般情况下,可以使用两种方法来启动MATLAB。在上面小节中,将快捷方式添加在桌面上了,因此可以双击桌面上的快捷方式图标,打开如图1-4所示的操作界面(Desktop)。
图1-4 MATLAB操作界面的默认外观
如果没有添加MATLAB的桌面快捷方式,则需要使用电脑选择路径matIab7.0\bin\win32文件夹中的MATLAB.exe应用程序,同样可以打开MATLAB的操作界面。这两种方法的结果是完全相同的。
说明
尽管使用上面两种方法都可以启动MATLAB,但是,两种方法还是有区别的。如果使用第二种方法启动MATLAB,系统会将matlab7.0\bin\win32作为一个默认的目录。因此,建议使用第一种方法来启动MATLAB。
1.3.1 操作界面简介
MATLAB 7延续了MATLAB 6.x版本的操作界面,该操作界面中包含了大量的交互性工作界面,例如:通用操作界面、工具包专用界面、帮助界面和演示界面等。这些交互性界面组合在一起,构成了MATLAB的默认操作界面。
在默认情况下,MATLAB的操作界面包含了3个最常见的界面:命令窗口、历史命令窗口和工作空间浏览器,同时,在窗口的左下角为“开始”按钮。
提示
在默认情况下,还可以在MATLAB的操作界面中看到名为“Current Directory”的交互界面选项卡。如果单击该选项卡,该交互界面就会出现。该交互界面是一个十分常用的界面:当前目录窗口。
下面详细介绍MATLAB中常见的几个交互界面。
◆ 命令窗口(Command Window):这是MATLAB操作界面中最为重要的窗口,也是用户进行各种操作的主要窗口。在这个窗口中,可以输入各种MATLAB的命令、函数和表达式。同时,所有操作和运算的结果也会在该窗口中出现(图形结果会单独显示)。
◆ 历史命令窗口(Command History):在默认情况下,该命令窗口出现在MATLAB操作界面的左下方。这个窗口中记录了用户已经操作过的各种命令、函数和表达式。之所以记录这些信息,主要功能有两个:方便用户回忆之前的操作,也可以方便用户对这些历史信息进行编辑(例如:复制、重运行等)。
◆ 当前目录窗口(Current Directory):在默认情况下,该命令窗口出现在MATLAB操作界面的左上方的后台。在这个窗口中,可以设置当前目录,展示目录中的M文件或者MAT文件等,同时,可以编辑M文件等。
◆ 工作空间浏览器(Workspace Browser):在默认情况下,该命令窗口出现在MATLAB操作界面的左上方的前台。在这个窗口中,可以查看工作空间中所有变量的类别、名称和大小。可以在这个窗口中观察、编辑和提取这些变量。
◆ “开始”按钮(Start):这个按钮是MATLAB 6.5版本后增加的按钮。单击这个按钮以后,会出现MATLAB的快捷菜单。这个菜单中分为两个部分,上半部分的菜单包含了各种交互界面,下半部分的菜单选项的主要功能是:窗口设置、访问MATLAB公司的网页、查看帮助文件等。
1.3.2 运行命令窗口
命令窗口(Command Window)是MATLAB的主要操作界面。关于MATLAB的大部分操作命令和结果都需要在命令窗口中进行输入和显示。本小节首先介绍命令窗口的外观特征。
由于命令窗口在默认情况下位于MATLAB操作界面的右方,可以单击命令窗口右上角的按钮,使命令窗口脱离操作界面,得到的命令窗口如图1-5所示。
图1-5 单独的命令窗口
和MATLAB之间的版本相比,MATLAB 7命令窗口的菜单栏有了一些调整。例如,相对于MATLAB 6.5,MATLAB 7的菜单栏中增加了“Debug”和“Desktop”选项,减少了“View”选项。其中,增加“Debug”选项是为了方便用户编译M文件,“Desktop”选项则是方便用户在界面置放方式上进行调换。
从MATLAB 6.x版本以后,当MATLAB在Windows操作系统中运行时,命令窗口都会出现命令行提示符“>>”。
说明
如果希望将命令窗口嵌放回到MATLAB的操作界面中,可以选择命令窗口中的“Desktop”→“Dock Command Window”命令,也可以直接单击菜单栏中的按钮。
1.3.3 命令窗口的显示方式
本节中将主要介绍控制命令窗口的命令和操作设置,希望读者可以全面了解MATLAB的命令系统。
在默认情况下,MATLAB 7对命令窗口中的字符或者数码设置了不同的颜色,这样会使得用户方便地查看各种信息。用户可以根据自己的需要,对命令窗口的字体风格、大小和颜色等进行自定义的设置。
在MATLAB的操作界面或者命令窗口中选择“FiIe”→“Preferences”命令,打开“Preferences”对话框,可以在其中设置字体格式等,如图1-6所示。
图1-6 参数设置对话框
选择“Preferences”对话框左窗格中的“Fonts”选项,在右侧会显示命令窗口的字体属性。默认情况下,MATLAB将命令窗口(Command Window)、历史窗口(Command History)和M文件编辑器(Editor)中的字体设置为相同:字体类型是Monospaced,字体属性是PIain,大小为10。而将帮助导航(HeIp Navigator)、当前记录窗口(Current Directory)、HTML文本文字、工作空间浏览器(Workspace Browser)和内存数组编辑器(Array Editor)中的字体设置为相同:字体类型是SansSerif,字体属性是PIain,大小为10。
对于上面两种字体类型,都可以在对应选项的下拉菜单中选择新的属性,然后单击“Preferences”对话框中的“OK”按钮,完成属性的设置。
注意
修改了字体的属性之后,这些设置都将被永久保留。这些设置不会随着MATLAB的关闭或者开启而改变。但是,用户只能改变各个局部的字体属性,不能改变字体的分布设置。也就是说,可以修改命令窗口的字体属性,但是命令窗口的字体和历史窗口的字体属性永远相同。
和设置字体属性类似,可以为不同类型的变量设置颜色,以示区别。选择“Preferences”对话框左窗格的“CoIors”选项,在对话框右侧会显示操作系统的字体颜色,如图1-7所示。
图1-7 设置字体颜色
在“Desktop tooI coIors”区域,可以设置MATLAB操作界面的工具字体颜色。默认情况下,MATLAB会使用系统字体的颜色,可以根据需要取消选中“Use system coIors”复选框,然后选择字体颜色。
在对话框中部的“M-fiIe syntax highIighting coIors”区域,可以为各种类型的字符设置颜色。MATLAB提供了6种不同类型的字符:关键字、字符串、系统命令、注释、未结束的字符串和错误提示等。可以根据自己的喜好来修改这些不同类型字符的颜色。
在对话框下部的“SampIe”区域,显示的是用户设置的字体样式。可以根据这个结果及时调整字体的颜色。如果对自行修改的字体颜色不满意,单击“Restore DefauIt CoIors”按钮,重新启用系统默认的字体颜色。
注意
尽管MATLAB为用户提供了十分宽松的环境来设置不同的颜色,但是,不能将不同类型的字符串设置为相同的颜色。例如,可以修改“关键字”的颜色,但是不能将“关键字”和“注释”设置成相同的颜色。
1.3.4 数值结果的显示方式
在默认情况下,命令窗口的数值结果都是以format short g的格式来显示的,可以根据计算的要求来自行设置数据结果的显示方式。
说明
上面描述的是MATLAB数值结果的显示方式,而不是数值的计算精度。MATLAB只是为了显示的简洁才采用了较少位数的显示,在实际存储和计算过程中使用的都是双精度。
表1-2显示的就是MATLAB中数值显示格式的种类、命令和含义。
表1-2 数据显示方式的常见命令
根据上面表格的介绍,可以直接在MATLAB的操作界面中输入相应的命令,查看同一个变量a的不同显示结果,如图1-8所示。
图1-8 设置数值的显示格式
可以看出,对于同一个变量a=2.563753324578901,使用不同的格式命令会在MATLAB中显示出不同的结果。
说明
从上面的操作结果可以看出,对于数值格式的设置,如果用户使用的是格式命令,相应的设置只对当前的MATLAB命令窗口有效,一旦MATLAB窗口关闭,这些设置也会失效。系统会恢复数值的默认格式。
1.3.5 命令窗口的标点符号
在MATLAB命令窗口中,不同的标点符号具有不同的运算含义,所以有必要了解各种标点符号的具体含义,灵活使用标点符号,会给运算带来很大的方便。表1-3归纳了各种常见标点符号的作用。
表1-3 MATLAB常见标点符号的功能
下面列举一些简单的例子来介绍常用标点符号的功能。
例1.1 在MATLAB中输入矩阵。
具体的输入步骤如下:
step 1 在MATLAB的命令窗口中输入下列内容:
A=[2,4,6;3,5,7;8,9,10]
step 2 按“Enter”键,结束输入并执行命令,得到的结果如图1-9所示。
图1-9 输入数值矩阵
说明
从上面的操作结果可以看出,数值矩阵可以直接输入方括号“[ ]”。而矩阵中的数值间隔使用的是逗号,每个数据行之间的分隔使用的是分号。最后,所有的标点都必须在英文状态下输入,MATLAB无法辨识中文的标点符号。
例1.2 在MATLAB命令窗口中输入下面的续行命令:
B=1+25-36+…… 37-58+77
按“Enter”键,结束输入并执行命令,得到的结果如图1-10所示。
图1-10 续行输入命令行
说明
上面的案例是在MATLAB的命令窗口环境中进行的,如果在“记事本”程序中运行上面的命令,则不能使用续行号,只能让其自动换行。
例1.3 在MATLAB中进行数组点乘。
具体的操作步骤如下:
step 1 在MATLAB的命令窗口中输入下列内容:
>> %例1.3.3-3演示标点符号的用法 >> C=[1,2,3].*[4,5,6]
step 2 按“Enter”键,结束输入并执行命令,得到的结果如图1-11所示。
图1-11 MATLAB中的点乘
上面的计算结果是两个数组中对应元素的乘积,例如,4=1×4;10=2×5;18=3×6。
说明
在图1.11中,首先使用注释号%引出了注释行,在下面的计算行中首先输入黑点,然后输入乘号,得到点乘的结果。如果在输入过程中没有输入黑点,MATLAB会提示计算错误,因为这两个矩阵无法相乘。
1.3.6 输入变量
在MATLAB的计算和编程过程中,变量和表达式都是最基础的元素。因此,如果需要深入学习MATLAB,十分有必要了解MATLAB关于定义变量和表达式的基本规则。
在MATLAB中,为变量定义名称需要满足下列规则:
◆ 变量名称和函数名称有大小写区别。对于变量名称NumVar和numvar,MATLAB会认为是不同的变量。exp是MATLAB内置的指数函数名称,因此,如果输入exp(0),系统会得出结果1;而如果输入EXP(0),MATLAB会显示提示信息“??? Undefined command/function 'EXP'”,表明MATLAB无法识别EXP的函数名称,如图1-12所示。
图1-12 函数名称区分大小写
◆ 变量名称的第一个字符必须是英文字符。因此,5Var、_matrix等都是不合法的变量名称。MATLAB 6.5以后的版本,变量名称最多可以包含63个字符。
◆ 变量名称中不可以包含空格或者标点符号,但是可以包括下画线。因此,变量名称Num_Var是合法的,但是变量名称Num、Var则是不合法的。
提示
尽管MATLAB对于变量名称的限制较少,但还是建议用户在设置变量名称时考虑到变量的含义。例如,在M文件中,变量名称inputname就比名称a易于理解。
在变量名称规则中,并没有限制用户使用MATLAB的预定义变量名称,但是根据笔者经验,建议不要使用MATLAB预先定义的变量名称。因为,用户每次启动MATLAB,系统就会自动产生这些变量,表1-4列出了常见的预定义变量名称。
表1-4 MATLAB中的预定义变量
MATLAB没有限制用户使用这些预定义变量,可以在MATLAB的任何文件中将这些预定义变量重新定义,赋予新值,然后重新计算。下面的例子说明用户可以使用MATLAB内置的预定义变量。
例1.4 如何在MATLAB中使用预定义变量。
详细程序清单如下:
>> %演示用户重新定义预定义变量 >> pi %显示系统的预定义变量pi ans = 3.1416 >> R=6; %定义半径 >> perimeter=2*pi*R %计算周长 perimeter = 37.699 >> pi=3.50; %重新定义变量pi >> perimeter=2*pi*R %重新计算周长 perimeter = 42 >> clear; %清除用户定义的变量pi和R >> R=6; %定义半径 >> perimeter=2*pi*R %重新计算周长 perimeter = 37.699
在程序清单的第一行中,用户直接输入了“pi”,可以显示系统的预定义变量pi,在默认情况下,MATLAB会以“format short g”的数值格式显示系统预先定义的数值3.1416。在后续的程序中,用户定义了变量R,然后计算周长perimeter,得到的结果是37.699。
在后面的代码中,重新定义变量pi,将其数值设置为3.50,然后重新计算周长,得到的结果是42,这就表明MATLAB已经将变量pi的值改为3.50。也就是说,MATLAB接受用户重新定义的预定义变量pi的数值。
然后使用命令cIear,清除前面步骤中定义的所有变量,重新定义半径,然后再次计算周长,得到的结果是37.699。这就表明,MATLAB又将变量pi的数值重新设置为3.1416。
说明
在MATLAB的IEEE算法规则中,被0除是允许的。这不会导致任何程序的中断,只是给出警告信息,然后使用名称Inf或者NaN来记述。这些名称可以在后面的代码中得到合理运用。
1.3.7 处理复数
在一般的数学运算软件中,复数属于一般的变量。之所以在本节中单独介绍关于复数的问题,是因为在MATLAB中将复数作为一个整体处理,而不是像其他程序语言那样把实部和虚部分开处理。而复数的虚数单位用预定义变量i或者j表示。
在MATLAB中,核心处理工具是矩阵,因此需要了解复数矩阵的处理方法和普通复数单数的差别。下面利用一些简单实例来说明MATLAB如何处理复数。
例1.5 在MATLAB中输入复数z1=8+10i,2 12 6z = + i,。
具体的操作步骤如下:
step 1 在MATLAB的命令窗口中输入下列内容:
>> %显示如何在MATLAB中输入复数 >> z1=8+10i; %直接按照直角坐标的方式输入 >> z2=12+6*i; %运算符构成的直角坐标的方式输入 >> z3=25*exp(i*pi/3); %运算符构成的极坐标的方式输入 >> A=[z1,z2,z3]
step 2 按“Enter”键,结束输入并执行命令,得到的结果如图1-13所示。
图1-13 在MATLAB中输入复数
在图1.13所示的操作界面中,复数z1的输入方式是直接按照书面习惯完成的,在这种书写格式中10i是一个完整的虚数部分,因此在10和i之间不允许有任何的空格。这种书写格式符合大家实际运用的习惯,但是仅限于使用在复数标量中,不能使用在复数矩阵中。
复数z2的输入方式则将虚数部分分开成6和i,同时使用乘号连接。这种方式适用于复数矩阵。但是,需要注意的是,如果可以使用第一种书写格式,尽量使用它,因为这种格式比复数z2的输入方式运算速度要快。对于大型的复数矩阵,这种运算速度差别十分明显。
例1.6 在MATLAB中输入复数矩阵并进行矩阵运算。
具体的操作步骤如下:
step 1 在MATLAB的命令窗口中输入下列内容:
>> %显示如何使用复数矩阵 >> A=[1,3,5;7,9,11]-[2,4,6;8,10,12]*i; %使用数组输入复数矩阵 >> B=[1+2*i,3+4*i;5+6*i,7+8*i;9+10*i,11+12*i]; %使用元素输入复数矩阵 >> C=A*B
step 2 按“Enter”键,结束输入并执行命令,得到的结果如图1-14所示。
图1-14 在MATLAB中输入复数矩阵
在这个例子中,使用数组方式输入了复数矩阵A,而使用数组元素方式输入复数矩阵B,这两种方式都是十分常见的输入方式,效果相同,可以根据习惯选择。从输入的繁易程度来看,第一种方法更加简单,建议使用这种方法输入复数矩阵。
说明
复数矩阵的乘法和实数矩阵的乘法计算方法是完全相同的,在例1.6中,复数矩阵A的维度是2×3,而复数矩阵B的维度是3×2,因此两个矩阵相乘得到的结果是一个2×2矩阵。
例1.7 在MATLAB中计算例1.6中复数矩阵C的实部、虚部、模和相角。
具体的操作步骤如下:
step 1 在MATLAB的命令窗口中输入下列内容:
>> %处理复数参量(实部、虚部、模和相角) Real=real(C); Imag=imag(C); %计算复数的实部、虚部 Mag=abs(C); Phase=angle(C)*180/pi; %计算复数的模、相角
step 2 依次输入上面的各个变量名称,按“Enter”键,结束输入并执行命令,得到的结果如图1-15所示。
图1-15 在MATLAB中计算复数的参量
说明
本例中的函数real、imag、abs、angle等都是MATLAB内置的函数,用来处理和计算复数的参量。同时,这些函数的参数都可以是数组类型,这样函数可以对数组元素逐个发生作用。
1.3.8 命令窗口的控制命令
在MATLAB的命令窗口中进行各种操作的时候,用户会经常遇到一些编辑工作,例如:清除窗口的程序语句,清除图形或者关闭MATLAB程序等。这些操作在MATLAB 7中大部分都可以使用对应的菜单或者功能按钮来实现,但是,在用户编写M文件的时候,还是有必要使用这些控制命令的,因此,在本节中归纳了MATLAB的常见控制命令和对应功能,如表1-5所示。
表1-5 MATLAB中的常见控制命令
上面这些控制命令在整个MATLAB程序中都是通用的,也就是说,既可以在命令窗口中输入这些控制命令,也可以在M文件或者MAT文件的程序语句中使用这些控制命令,功能是完全相同的。例如,在命令窗口中输入cIear命令,将会清除工作空间中的变量;如果在M文件中输入cIear命令,也会清除变量。
说明
上面这些控制命令一直都是MATLAB中的基本通用命令,对各个版本都适用。如果使用的是MATLAB 6.x或者更低版本,都可以使用上述命令。
1.3.9 使用历史窗口
在前面已经简单介绍了历史窗口(Command History)的作用,下面将详细介绍如何合理使用MATLAB的历史窗口的功能。在MATLAB中,利用历史窗口可以验证用户即时的想法,相当于可以随时进行各种尝试和试验,边做边想。同时,MATLAB还提供了另外一个有效工具实录命令diary。下面分别进行详细介绍。
在默认的情况下,历史窗口位于MATLAB操作桌面左下方的前台,可以单击历史窗口右上方的按钮,查看独立的历史窗口,如图1-16所示。
图1-16 历史窗口
历史窗口的菜单栏和命令窗口的菜单栏相同,如果希望将历史窗口嵌放回到MATLAB的操作界面中,可以选择历史窗口中的“Desktop”→“Dock Command Window”命令,也可以直接单击菜单栏中的按钮。
在历史窗口中,记录着用户在MATLAB命令窗口中输入的所有命令行(除非用户人为地删除历史窗口中的记录)。一般而言,完整的历史记录包括:用户每次启动MATLAB的时间,每次启动MATLAB的所有命令行。
用户不仅能在历史窗口中查看命令窗口中运行过的所有命令行,而且可以根据需要编辑这些命令行。下面列举几个常见的编辑功能。
◆ 复制命令行:这种编辑功能适用于使用原来的部分命令行。例如,用户需要输入新的命令行,有部分命令行和历史命令行重复,则可以在历史窗口中点亮相应的命令行,然后单击鼠标右键,在弹出的快捷菜单中选择“Copy”命令,如图1-17所示。
图1-17 复制历史命令行
复制历史命令行后,可以在命令窗口中的任何地方粘贴这些命令行,如图1-18所示。
图1-18 粘贴历史命令行
粘贴历史命令行后,可以在此之后继续输入新的命令行,这样就节省了重新输入这些命令行的时间。
说明
由于上面的操作需要在历史窗口和命令窗口中共同操作,因此需要首先将历史窗口嵌放回到MATLAB的操作界面中。
◆ 运行命令行:这个操作的功能是运行原来输入的命令行,得到原来命令行的结果。在历史窗口中选择需要运行的历史命令行,然后单击鼠标右键,在弹出的快捷菜单中选择“EvaIuate SeIection”命令,如图1-19所示。
图1-19 运行历史命令行
运行历史命令行后,在命令窗口中就会显示相应的运行结果,如图1-20所示。
图1-20 运行的结果
说明
如果运行的是单行命令行,则可以直接使用鼠标左键来双击命令行;如果运行的是多行命令行,则需要按下“Ctrl”键同时选择多行命令行。
◆ 创建M文件:可以根据需要将历史命令行编写成为M文件,在历史窗口中选择需要运行的历史命令行,然后单击鼠标右键,在弹出的快捷菜单中选择“Create M-FiIe”命令,如图1-21所示。
图1-21 创建M文件
选择相应的菜单选项后,MATLAB就会调用M文件编辑器,并且将用户选择的历史命令行填写在M文件编辑器中,如图1-22所示。
图1-22 创建完成的M文件
说明
M文件是MATLAB的重要应用之一,在后面的章节中将详细介绍如何使用和编辑M文件。当通过历史命令行创建了M文件后,需要经过必要的操作才能得到完整的M文件。
1.3.10 使用实录命令
在MATLAB中,为用户提供了diary命令,用来创建“日志”文件。在这个“日志”文件中,记录了当前命令窗口中的所有内容,包括命令和计算结果等。文件的保存格式是ASCII码,因此需要使用“记事本”程序或者其他文本软件来阅读日志文件。
在MATLAB程序启动的前提下,首先单击操作界面中的“Current Directory”按钮旁边的浏览按钮,在打开的对话框中选择合理的路径。在后面步骤中创建的日志文件会保存在该路径中。如果用户不修改路径,MATLAB会将日志文件保存在默认的MATLAB7.0\work文件夹中。
在用户修改了保存路径后,就可以在命令窗口中输入关于实录的命令,创建日志文件。下面举例详细介绍。
例1.8 在MATLAB中创建名为“first_diary”的日志文件,并阅读该日志文件,如图1-23所示。
图1-23 创建日志文件
详细的程序清单如下:
>> diary first_diary %创建名称为first_diary的日志文件 >> %显示如何在MATLAB中输入复数 z1=8+10i; %直接按照直角坐标的方式输入 z2=12+6*i; %运算符构成的直角坐标的方式输入 z3=25*exp(i*pi/3); %运算符构成的极坐标的方式输入 A=[z1,z2,z3] A = 8 + 10i 12 + 6i 12.5 + 21.651i >> diary off %关闭记录命令,完成日志文件
由于没有修改保存路径,因此可以在MATLAB7.0\work路径中找到相应的日志文件,并用“记事本”程序打开该日志文件,如图1-24所示。
图1-24 阅读日志文件
说明
使用上面的方法创建的日志文件不带有扩展名,一般可以使用文本编辑器或者MATLAB的M文件编辑器来阅读和编辑该日志文件。
1.3.11 当前目录浏览器和路径管理
在MATLAB中包含大量的函数和数据库,当在命令窗口中输入命令行的时候,MATLAB如何搜索到相应的函数和数据,怎样有效地管理这些函数和数据库的路径、提高搜索的效率是本节的核心问题。
同时,在使用MATLAB的时候,会产生大量的MATLAB文件,如何管理好这些文件也是一个重要的问题。如果不能有效地管理这些文件,将会直接影响用户运行MATLAB的效率。
在MATLAB中,提供当前目录浏览器来管理各种文件。在默认的情况下,当前目录浏览器在MATLAB操作界面的左上方的后台,单击“Current Directory”选项卡,可以使目录浏览器在MATLAB的前台显示。单击目录浏览器右上方的按钮,可以查看目录浏览器的详细外观,如图1-25所示。
图1-25 当前目录浏览器
在默认情况下,当前目录浏览器包括了菜单栏、当前目录设置区、工具菜单和文件详细列表等。其中,用户需要经常使用的是文件详细列表区域,在该区域中,可以运行或者编辑M文件,装载MAT数据文件等,如图1-26所示。
图1-26 操作和编辑M文件
上面的操作过程十分简单,用户首先在当前目录浏览器中选择相应的M文件,然后单击鼠标右键,在弹出的快捷菜单中选择对应的命令。例如,用户希望运行对应的M文件,可以选择“Run”命令;用户希望编辑该M文件,则选择“Open”命令,该M文件就会出现在M文件的编辑器中。其他的操作都可以通过在该菜单中选择对应的选项来完成。
1.3.12 设置当前目录
在默认的情况下,启动MATLAB的时候,系统会将当前目录设置为“MATLAB7.0\work”或者“MATLAB7.0\bin\win32”,这取决于用户启动MATLAB的方式,这在前面的内容中已经有了介绍。
对于“MATLAB7.0\work”这个目录路径,在该路径中存放用户的文件是允许的,而且是安全的,因此可以沿用这个默认路径;而对于“MATLAB7.0\bin\win32”这个目录路径,则不建议用户使用,如果启动MATLAB的时候产生了这个路径,建议改变这个默认的目录路径。
尽管可以沿用“MATLAB7.0\work”这个目录路径,但是根据笔者经验,为了方便用户管理各种MATLAB文件,还是建议用户创建自己的工作路径,来存放自己创建的应用文件。而将“MATLAB7.0\work”这个目录路径作为临时目录使用。
创建工作目录的方法和在Windows中创建目录的方法完全相同,读者可以参阅相应的书籍。下面建议将用户创建的工作目录设置为当前目录,这是因为在MATLAB环境中,如果不特别指明存放目录,MATLAB都会默认地将文件存放在当前目录中。如果将自己设置的工作目录设置为当前目录,就可以保证MATLAB运行的可靠和便捷。
可以在当前目录浏览器中的目录设置框中输入新的工作目录,或者单击该界面中的目录浏览按钮,选择新的工作目录,如图1-27所示。
图1-27 设置当前目录
除了上面的方法,习惯了编程的用户也可以在命令窗口中输入控制命令来修改当前目录。这种方法适用于MATLAB的各个版本,而且控制命令不仅可以在命令窗口中使用,也可以在M文件中使用,效果相同。设置当前目录的控制命令是cd,例如,用户需要将当前目录设置为D:\Study\MatIab\mfiIes,对应的控制命令为cd D:\Study\MatIab\mfiIes。
提示
使用上面两种方法设置的当前目录,只在当前开启的MATLAB环境中有效。如果用户重新设置MATLAB应用程序,上面的设置操作需要重新进行。
1.3.13 MATLAB的搜索路径
在MATLAB中,所有的文件都被存放在一组结构比较严谨的目录路径中。MATLAB会将这些目录按照一定的次序设置为搜索路径的各个节点。当用户运行MATLAB的时候,程序就会沿着这个设定好的路径进行搜索,查找相应的文件、函数或者具体的数据。
当MATLAB进行搜索的时候,会按照一定的次序进行,例如用户在命令窗口中输入命令:my_matIab,程序会首先在内存中搜索是否有名为my_matIab的变量,如果没有找到,则再检查my_matIab是否是内置的函数,如果没有搜索到结果,则在当前目录中检查是否有名为my_matIab的M文件,如果还是没有搜索到,则在其他目录中检查是否存在名为my_matIab的M文件。
上面的搜索过程就是MATLAB的典型搜索路径,了解这个搜索路径就可以有效地进行路径管理,提高搜索效率和MATLAB的运行效率。
如果有多个目录需要同时和MATLAB进行信息交换,应该将这些目录设置在搜索路径中,这些目录中的所有内容就都可以被MATLAB调用。或者,用户设置了某个目录来存放所有的文件和数据,这个目录也应该被设置在MATLAB的搜索路径中。
可以在MATLAB的命令窗口中输入“pathtooI”命令或者选择“FiIe”→“Set Path”命令,打开“Set Path”对话框,在其中设置路径的各个参数,如图1-28所示。
图1-28 “Set Path”对话框
在“Set Path”对话框中,单击“Add FoIder”按钮,然后选择相应的路径,就可以将该路径“D:\Study\MatIab\mfiIes”设置到搜索路径中。在“Set Path”对话框中,可以编辑任意一个现存的路径信息,例如,添加子文件夹、移动文件夹的位置或者删除路径等,只需单击对话框中的对应按钮。
提示
在“Set Path”对话框中,存在两种修改状态。如果在修改路径信息的时候,仅使用对话框左侧的按钮,那么这种修改行为只是当前有效;如果在修改路径信息的时候,单击了对话框中的“Save”按钮,则这种修改行为将永久有效。
除了上面的设置方法,MATLAB还提供了path命令来设置路径,这个命令对于MATLAB的各个版本都适用。例如,可以使用path命令查看MATLAB的路径信息,如图1-29所示。
图1-29 查看MATLAB的路径信息
提示
使用path命令完成的路径修改信息只在当前MATLAB的环境中有效,当重新启动MATLAB后,使用该命令完成的路径信息都将失效。
1.3.14 工作空间浏览器和数组编辑器
在默认的情况下,工作空间浏览器位于MATLAB操作界面的左上侧的后台,单击“Workspace”选项卡,可以使工作空间浏览器在MATLAB的前台显示。然后,单击工作空间浏览器右上方的按钮,可以查看工作空间浏览器的详细外观,如图1-30所示。
图1-30 工作空间浏览器
和其他MATLAB组件的界面相比,工作空间浏览器的菜单栏中多了一个“Graphics”菜单项,当选中其中某个变量时,可以选择该菜单项中的子选项,很方便地绘制相应的各种图形,如图1-31所示。
图1-31 图形选项菜单
在图形选项菜单中,可以选择各种常见的图表类型。如果菜单选项中没有合适的图表类型,可以选择菜单中的“More PIots”选项,打开“PIot CataIog”对话框,选择合适的图表类型,如图1-32所示。
图1-32 “PIot CataIog”对话框
“PIot CataIog”对话框的左侧是图形的分类,中间表示的是图表类型,右侧则是用户选择的图表类型的描述。
说明
工作空间浏览器中的“Graphics”菜单选项是MATLAB 7中新增的,在MATLAB 6.x版本中,并没有该菜单选项。
除了非常强大的图形绘制功能之外,工作空间浏览器还有其他多种应用功能,例如内存变量的查阅、保存和编辑等。所有这些操作都比较简单,只需在工作空间浏览器中选择相应的变量,然后右击鼠标,在弹出的快捷菜单中选择相应的命令,如图1-33所示。
图1-33 编辑内存变量
对变量的操作可以从菜单选项的名称看出,例如,“Rename”菜单选项表示对应的操作是重命名该变量;“Copy”菜单选项表示对应的操作是复制该变量等。
1.3.15 变量的编辑命令
在MATLAB中,用户除了可以在工作空间浏览器中编辑内存变量,还可以在MATLAB的命令窗口中输入相应的命令,来查阅和删除内存变量。下面用简单的案例来说明如何在命令窗口中对变量进行操作。
例1.9 在MATLAB命令窗口中查阅内存变量。
在命令窗口中输入who和whos命令,查看内存变量的信息,如图1-34所示。
图1-34 查阅内存变量的信息
说明
who和whos命令适用于MATLAB的各个版本,两个命令的区别只在于内存变量信息的详细程度。两个命令结果的列表次序随具体情况而不同。
例1.10 承接上面的例子,在MATLAB命令窗口中删除内存变量Desp。
在命令窗口中输入下面的命令行:
>> clear Desp; >> who
得到的结果如图1-35所示。
图1-35 删除内存变量
和前面的例子对比可以看出,当运行cIear命令后,将Desp变量从工作空间删除,而且在工作空间浏览器中也将该变量删除。
说明
如果在命令窗口中直接输入clear命令,就可以删除工作空间中的所有变量;如果需要删除多个内存变量,可以在clear命令后面依次添加删除的变量名称。
1.3.16 数组编辑器
在MATLAB中,数组和矩阵都是十分重要的基础变量,因此MATLAB专门提供了数组编辑器这个工具来编辑数组。选择工作空间浏览器中任意一个数组(就是cIass类别为doubIe的内存变量),然后单击工具栏中的“Open seIection”按钮,或者直接双击该变量,就可以打开该变量的数组编辑器,如图1-36所示。
图1-36 打开数组编辑器
注意
在MATLAB中,数组编辑器只支持一维或者二维数值数组,而不支持元胞数组、构架数组、符号类数组、三维数组、字符串数组等。因此,在前面的步骤中,必须选择数值数组打开相应的数组编辑器。
在上面的步骤中,打开了变量y的数组编辑器,如图1-37所示。
图1-37 变量的数组编辑器
可以在数组编辑器中直接编辑该变量,对于大型数组,使用数组编辑器会给用户带来很大的便利。
1.3.17 存取数据文件
在MATLAB中,提供了Save和Load命令来实现数据文件的存取。表1-6列出了命令的常见用法。
表1-6 MATLAB的文件存取命令
表1-6中列出了几个常见的文件存取命令,可以根据需要选择对应的存取命令,对于一些比较少见的存取命令,可以查阅MATLAB的相关帮助。
说明
在表1-6的命令当中,参数Filename可以带有路径,但是不能带扩展名;x、y、z代表变量名称,个数不限,但是名称之间必须以空格来分隔;- ASCII参数表示数据将以ASCII格式来处理,生成的文件可以使用文本编辑器来编辑,一般适用于数据较多的文件;如果命令行后面没有- ASCII参数,在默认情况下,数据将以二进制格式来处理,生成以mat为扩展名的文件。
在MATLAB中,除了可以在命令窗口中输入相应的命令之外,也可以在工作空间中选择相应的按钮,来实现数据文件的存取工作。例如,可以选择工作空间浏览器中的“FiIe”→“Save Workspace As”命令,将所有变量保存到MAT文件中,如图1-38所示。
图1-38 保存所有的变量
当选择“Save Workspace As”命令后,打开“Save to MAT-FiIe”对话框,在对话框中输入数据文件的名称,然后选择保存路径,就可以保存所有的变量。
如果需要保存部分变量,可以在工作空间浏览器中同时选择需要保存的变量,然后单击鼠标右键,在弹出的快捷菜单中选择“Save As”命令,将选择的变量保存到MAT文件中,如图1-39所示。
图1-39 保存部分变量
说明
当选择“Save As”命令后,同样可以打开“Save to MAT-File”对话框,在对话框中输入数据文件的名称,然后选择保存路径,就可以保存所选择的变量。
在MATLAB的工作空间浏览器中,也可以加载数据。选择工作空间浏览器中的“FiIe”→“Open”命令,打开“Open”对话框,来加载数据文件中的所有变量;同时,可以选择“FiIe”→“Import Data”命令,打开“Open”对话框,选择需要加载的数据文件,然后单击“打开”按钮,打开“Import Wizard”对话框,从中选中希望加载的变量,如图1-40所示。
图1-40 “Import Wizard”对话框
在“Import Wizard”对话框中,左窗格中是数据文件中的变量,可以在这些变量中选择需要加载的变量,右窗格则是用户所选变量的预览效果。在图1.40中,用户选择的是变量“my_array”,在右窗格中显示了该变量的预览效果。
提示
如果某些数据是经过很复杂的计算过程得到的,为了避免再次重复计算,通常会使用Save命令加以保存。如果在后面的操作中需要使用这些数据,则可以使用Load命令来加载。
1.4 MATLAB 7的帮助系统
MATLAB的各个版本都为用户提供了非常详细的帮助系统,可以帮助用户更好地了解和运用MATLAB。因此,不论用户是否使用过MATLAB,是否熟悉MATLAB,都应该了解和掌握MATLAB的帮助系统。同时,在MATLAB 6.x以后的版本中,帮助系统的帮助方式、内容层次相对于之前的版本发生了本质变化,因此,更加有必要了解MATLAB 7的帮助系统。在本节中,将详细介绍MATLAB 7的帮助系统。
1.4.1 纯文本帮助
在MATLAB中,所有执行命令或者函数的M源文件都有较为详细的注释,这些注释都是用纯文本的形式来表示的,一般都包括了函数的调用格式或者输入参数、输出结果的含义。这些帮助是最原始的(相当于最底层的源文件),当MATLAB不同版本中函数发生变化的时候,这些文本帮助也会同步更新。
下面使用简单的例子来说明如何使用MATLAB的纯文本帮助。
例1.11 如何在MATLAB中查阅帮助信息。
根据MATLAB的帮助体系,可以查阅不同范围的帮助,具体步骤如下:
step 1 在MATLAB的命令窗口中输入heIp heIp命令,然后按下“Enter”键,查阅如何在MATLAB中使用heIp命令,如图1-41所示。
图1-41 使用heIp命令的帮助信息
图1.41中显示了如何在MATLAB中使用heIp命令的帮助信息,可以详细阅读其中的信息来了解如何使用heIp命令。
step 2 在MATLAB的命令窗口中输入heIp命令,然后按下“Enter”键,查阅关于MATLAB系统中的所有主题的帮助信息,如图1-42所示。
图1-42 查阅关于主题的帮助信息
step 3 在MATLAB的命令窗口中输入heIp topic命令,然后按下“Enter”键,查阅关于该主题的所有帮助信息,如图1-43所示。
图1-43 查阅主题下的函数帮助信息
提示
上面的步骤中,简单地演示了如何在MATLAB中使用help命令,来获得各种函数、命令的帮助信息。在实际应用中,可以灵活使用这些命令来搜索所需的帮助信息。
例1.12 如何在MATLAB中搜索各命令的帮助信息,在M函数文件中搜索包含关键字jacobian的所有M函数文件名,如图1-44所示。
图1-44 搜索M文件的帮助文件
1.4.2 演示(demo)帮助
在MATLAB中,各个工具包都有设计好的演示程序,这组演示程序在交互界面中运行,操作非常简便。因此,运行这组演示程序,然后研究演示程序的相关M文件,对MATLAB用户而言是十分有益的。这种演示功能对提高用户对MATLAB的运用能力有着重要的作用。特别对于那些初学者而言,不需要了解复杂的程序就可以直观地查看程序结果,可以加强用户对MATLAB的掌握能力。
在MATLAB的命令窗口中输入“demo”命令,就可以调用关于演示程序的帮助对话框,如图1-45所示。
图1-45 MATLAB的demo帮助
可以在对话框的左窗格中选择演示的内容,例如选择“Graphics”选项,在右窗格中会出现该项目下的各种类别的演示程序。单击对话框中的“3-D Surface PIots”选项,MATLAB中会显示关于“3-D Surface PIots”演示程序的介绍,然后单击对话框中的“Run this demo”选项,MATLAB会打开“3-D PIots in HandIe Graphics”对话框,这就是演示demo的交互界面,如图1-46所示。
图1-46 显示demo的交互界面
演示该demo的是一个交互界面,可以调整该界面中选项按钮的数值,改变图形的显示参数,这些修改的参数会出现在“Command Window”框中,如图1-47所示。
图1-47 动态演示demo
除了可以在打开的动态界面中演示demo之外,还可以查看该demo的程序代码,单击“HeIp”对话框中的“View code for graf3d”选项,查看该GUI界面的MATLAB程序代码,如图1-48所示。
图1-48 查看demo的程序代码
提示
除了在命令窗口中输入demo命令来调用demo的“Help”对话框之外,还可以选择MATLAB的操作界面中的“Start”→“Demos”命令,调用demo的对话框。
1.4.3 帮助导航/浏览器
在MATLAB中提供帮助信息的“导航/浏览器”交互界面是MATLAB 6.x以后的版本的重要改进,这个交互界面主要由帮助导航器和帮助浏览器两个部分组成。这个帮助文件和M文件中的纯文本帮助无关,而是MATLAB专门设置的独立帮助系统。该系统对MATLAB的功能叙述得全面、系统,而且界面友好,使用方便,是用户查找帮助的重要途径。
在MATLAB的命令窗口中输入命令“heIpbrowser”或者“heIpdesk”,或者在操作界面中单击按钮,打开帮助导航/浏览器交互界面,如图1-49所示。
图1-49 帮助导航/浏览器界面
1.4.4 Contents帮助文件目录窗口
在默认情况下,当用户在MATLAB中打开帮助导航/浏览器交互界面时,界面会显示“Contents”选项卡。这个选项卡使用了节点可展开的目录树来列出各种帮助信息,直接使用鼠标来单击相应的目录条,就可以在浏览器中显示出相应标题的HTML帮助文件。
这个窗口是向用户提供全方位系统帮助的向导,层次清晰、功能划分规范,可以查找相应的帮助信息。例如,初学用户希望了解MATLAB,可以选择对话框中的“MATLAB” →“Getting Started”→“Introduction”→“What Is MATLAB?” 选项,在浏览器中查看关于MATLAB的HTML帮助文件,如图1-50所示。
图1-50 查看帮助文件的目录
提示
在MATLAB的帮助浏览器中,除了提供HTML类型的帮助文件,还提供了PDF类型、Web类型的帮助文件。对于不同类型的文件,在目录树中对应文件名称之前的符号会有所不同。
1.4.5 Index帮助文件索引窗口
在MATLAB中,为了提高用户使用帮助文件的效率,专门为命令、函数和一些专用术语提供了索引表。选择交互界面中的“Index”选项卡,然后在“Search index for”文本框中输入需要查找的名称,在其下面就会出现与此匹配的词汇列表。同时,在浏览器的界面中显示相应的介绍内容。
例如,在“Search index for”文本框中输入“sin”进行搜索,得到的结果如图1-51所示。
图1-51 查看“sin”的信息
提示
在MATLAB 7中,交互界面的“Index”选项中添加了A~Z的字母索引体系,当用户单击其中一个字母的时候,会在其下的列表中显示含有该字母的资源信息。
1.4.6 Search帮助文件搜索窗口
和前面“Index”选项卡不同,在“Search”选项卡中,可以利用关键字在全文中查找到与关键字相匹配的内容。在“Search”选项卡中的搜索范围是整个HTML文件而不仅仅是专业术语,因此其覆盖面更加广泛。
在默认的情况下,该选项卡中的搜索方式是全文搜索。例如,在“Search for”文本框中输入“IapIace”,就可以在整个HTML文件中搜索含有该字母片断的内容,如图1-52所示。
图1-52 在“Search”选项卡中查看“IapIace”的信息
在搜索结果的底部,有“Search Support Database on Web for IapIace”超链接,单击该链接,MATLAB就会启动IE在相关网站上搜索关于IapIace的资源信息。同时,在搜索界面的底部,显示了“18 pages contain the word:IapIace”的字样,表明搜索的结果个数。
在帮助浏览器中会显示每个搜索结果的HTML文件,同时将关键字“IapIace”高亮显示,方便用户查阅相应的信息。
注意
在MATLAB 6.5以后的版本中,MATLAB开始支持关键字之间的逻辑运算符AND、OR、NOT等,这些逻辑运算符都需要大写,同时必须和关键字之间保持间隔。
1.5 小结
在本章中,首先向读者介绍了MATLAB软件的特点,然后循序渐进地介绍了如何安装MATLAB 7以及MATLAB 7的工作环境、帮助系统等内容,希望通过本章的学习,读者能够对MATLAB有一个直观的印象。在后面的章节中,将详细介绍关于MATLAB的基础知识和基础操作方法。