第一章 概 述 1.1 MATLAB产品族简介 1.2 MATLAB的桌面环境 1.3 Command Windows和MATLAB指令 第一章 概 述 1.1 MATLAB产品族简介 1.2 MATLAB的桌面环境 1.3 Command Windows和MATLAB指令 1.4 Command History 和历史记录 1.5 Current Directory和搜索路径 1.6 Launch Pad和Start菜单 1.7 使用帮助 1.8 本章小结
1.1 MATLAB产品族简介 MATLAB的名称源自Matrix Laboratory,它的首创者是在数值线性代数领域颇有影响的Cleve Moler博士,他也是生产经营MATLAB产品的美国Mathworks公司的创始人之一。MATLAB是一种科学计算软件,专门以矩阵的形式处理数据。MATLAB将高性能的数值计算和可视化集成在一起,并提供了大量的内置函数,从而使其被广泛地应用于科学计算、控制系统、信息处理等领域的分析、仿真和设计工作中,而且利用MATLAB产品的开放式结构,用户可以非常容易地对MATLAB的功能进行扩充,从而在不断深化对问题认识的同时,逐步完善MATLAB产品以提高产品自身的竞争能力。
MATLAB产品族可以用来进行如下工作: * 数值分析; * 数值和符号计算; * 工程与科学绘图; * 控制系统的设计与仿真; * 数字图像处理; * 数字信号处理; * 通讯系统设计与仿真; * 财务与金融工程。
1.1.1 MATLAB的产品体系 MATLAB产品由若干个模块组成,不同的模块完成不同的功能,其中有 * MATLAB; * MATLAB Toolboxes; * MATLAB Compiler; * Simulink; * Simulink Blockset; * Real-Time Workshop (RTW); * Stateflow; * Stateflow Coder。
图1-1 MATLAB的产品体系
其中,MATLAB是MATLAB产品家族的基础,它提供了基本的数学算法,例如矩阵运算、数值分析算法,MATLAB集成了2D和3D图形功能,以完成相应数值可视化的工作,并且提供了一种交互式的高级编程语言——M语言,利用M语言可以通过编写脚本或者函数文件实现用户自己的算法。
MATLAB Compiler是一种编译工具,它能够将那些利用MATLAB提供的编程语言——M语言编写的函数文件编译生成标准的C/C++语言源文件,而生成的标准C/C++源代码可以被任何一种C/C++编译器编译生成函数库或者可执行文件,这样就可以扩展MATLAB功能,使MATLAB能够同其他高级编程语言(例如C/C++语言)进行混合应用,取长补短,以提高程序的运行效率,丰富程序开发的手段。 MATLAB除了能够和C/C++语言集成开发以外,目前的MATLAB还提供了和Java语言接口的能力,并且它还支持COM标准,能够和任何一种支持COM标准的软件协同工作。另外,在Release 13中,包含了MATLAB Compiler的扩展产品——MATLAB COM Builder和Excel Builder,分别用来将MATLAB的函数文件打包成COM组件或者Excel插件,将MATLAB应用程序算法集成到相应的开发工具或者应用软件中。
利用M语言还开发了相应的MATLAB专业工具箱函数供用户直接使用,这些工具箱应用的算法是开放的、可扩展的,用户不仅可以察看其中的算法,还可以针对一些算法进行修改,甚至允许开发自己的算法以便扩充工具箱的功能。目前MATLAB产品的工具箱有40多种,分别涵盖了数据获取、科学计算、控制系统设计与分析、数字信号处理、数字图像处理、金融财务分析以及生物遗传工程等专业领域。
MATLAB主要的专业工具箱包括以下几种。 * 数学与数据分析: Optimization Statics Nerual Network Symbolic Math Partial Differential Equation Mapping Spline Curve Fitting Virtual Reality Bioinforamtics
* 数据获取与采集: Data Acquisition Image Acquisition Instrument Control Database Excel
* 信号处理与图像处理: Signal Processing Image Processing Communication System Identification Wavelet Filter Design MATLAB Link for Code Composer Studio
* 控制系统设计与分析: Control system Fuzzy Logic Robust Control16 Mu-Analysis and Synthesis18 LMI Control18 Model Predictive Control18 Model-Based Calibration
* 财经与金融: Financial Financial Time Series GARCH Datafeed Financial Derivatives Fixed Income
1.1.2 Simulink简介 Simulink是基于MATLAB的框图设计环境,可以用来对各种动态系统进行建模、分析和仿真,它的建模范围广泛,可以针对任何能够用数学来描述的系统进行建模,例如航空航天动力学系统、卫星控制制导系统、通讯系统、船舶及汽车等,其中包括连续、离散,条件执行、事件驱动、单速率、多速率和混杂系统等。Simulink提供了利用鼠标拖放的方法建立系统框图模型的图形界面,而且Simulink还提供了丰富的功能块以及不同的专业模块集合,利用Simulink几乎可以做到不书写一行代码就能完成整个动态系统的建模工作。 此外,在Simulink基础上还提供了Stateflow,用来进行事件驱动过程的仿真。
Simulink的特点: * 交互式建模:Simulink本身就提供了大量的功能块方便用户快速建立动态系统的模型,如图1-2所示,建模的时候只需要利用鼠标拖放功能块并将其连接起来即可。 * 交互式仿真:Simulink的框图提供可交互的仿真环境,可以将仿真结果动态显示出来,并且在各种仿真的过程中调节系统的参数。 * 任意扩充和定制功能:Simulink的开放式结构允许用户扩充仿真环境的功能,可以将用户利用C、C++、Fortran语言编写的算法集成到Simulink框图中。
图1-2 Simulink的库浏览器
* 与MATLAB工具集成:Simulink的基础是MATLAB,在Simulink框图中可以直接利用MATLAB的数学、图形和编辑功能,完成诸如数据分析、过程自动化分析、优化参数等工作。 * 专业模型库:为了扩展Simulink的功能,Mathworks公司针对不同的专业领域和行业开发了各种专业模型库,将这些模型库同Simulink的基本模块库结合起来,可以完成不同专业领域动态系统的建模工作。Simulink的相关产品以及专业模块如表1-1所示。
表1-1 MATLAB中的Simulink相关模块
表1-1 MATLAB中的Simulink相关模块
图1-3 用Simalink进行视频系统仿真的例子
图1-3 用Simalink进行视频系统仿真的例子
1.1.3 Stateflow 简介 Stateflow是一个交互式的设计工具,它基于有限状态机的理论,可以用来对复杂的事件驱动系统进行建模和仿真。Stateflow与Simulink和MATLAB紧密集成,可以将Stateflow创建的复杂控制逻辑有效地结合到Simulink的模型中。 有限状态机是具有有限个状态的系统的理论表述。它以某些缺省的状态为起点,根据所定义的事件和转移进行操作,转移表示状态机如何对事件进行响应(控制流程)。
图1-4 有限状态机的一个例子
图1-4就是有限状态机的一个例子。其中,A、B、C、D、E分别表示系统的不同状态,而a、b表示响应的事件,具有方向的线表示状态与状态之间的逻辑流,逻辑流依赖事件驱动,所以这是一个典型的事件驱动模型,可利用有限状态机理论进行表述。 假设用一个状态机表示空调的制冷工作,一般空调工作的时候具有两种状态,即运行(On)和停止(Off)。当电源接通之后,空调机一般默认为运行状态,若室内的温度高于设定的温度,则空调机处于运行状态,若室内的温度低于设定的温度,则空调机停止运行,这样系统就从一个状态转换到另一个状态。利用Stateflow可以对该系统进行建模,如图1-5所示。
图1-5 利用Stateflow建模
Stateflow主要可以用于各种动态逻辑、控制流程系统的建模与仿真,例如在飞行器的导航制导与控制系统中,经常需要根据当前的飞行状态切换不同的系统控制参数,利用Stateflow就可以完成此类系统的建模与仿真。再比如说,在通讯系统中,为了仿真网络通讯中的物理层(MAC Layer)协议,也可以使用Stateflow进行建模与仿真,图1-6展示了用于仿真以太网物理层协议的Stateflow模型。
图1-6 利用Stateflow完成以太网物理层协议仿真
1.1.4 自动化代码生成工具 在MATLAB产品族中,自动化的代码生成工具主要有Real-Time Workshop(RTW)和Stateflow Coder,这两种代码生成工具可以直接将Simulink的模型框图和Stateflow的状态图转换成高效、优化的程序代码。利用RTW生成的代码简洁、可靠、易读。目前RTW支持生成标准的C语言代码,并且具备了生成其他语言代码的能力。整个代码的生成、编译以及相应的目标下载过程都是自动完成的,用户需要做的仅仅是使用鼠标点击几个按钮即可。Mathworks公司针对不同的实时或非实时操作系统平台开发了相应的目标选项,以配合不同的软、硬件系统完成快速控制原型(Rapid Control Prototype)开发、硬件在回路的实时仿真(Hardware-in-Loop)、产品代码生成等工作。
图1-7 Real-Time Workshop的体系结构
目前MATLAB/Simulink的RTW支持的目标主要包括: * S-function Target; * Rapid Simulation Target; * General Real-Time Target; * DOS(4GW)Real-Time Target; * Real-Time Windows Target; * LE/O Real-Time Target; * Tornado(VxWorks)Real-Time Target; * Embedded Target for Motorola MPC555; * Embedded Target for TI TMS320 C6000 DSP; * Embedded Target for Infineon C166; * Embedded Target for Motorola HC12; * Embedded Target for OSEK/VDX; * xPC Target; * 第三方硬件平台。
在这些目标体系中,常用于控制系统原型仿真的目标平台主要包括Real-Time Windows Target、xPC Target以及dSPACE等第三方硬件平台。 Real-Time Windows Target可以将一台运行Windows操作系统的PC机转变成为独立的自主目标机,目标机交互地实时运行Simulink模型。Real-Time Windows Target支持直接的I/O访问,允许用户和模型之间实时交互,是一个易用的、廉价的低端快速原型开发和硬件在回路仿真的目标环境。
利用xPC Target,用户可以将Simulink提供的支持xPC Target的I/O模块添加到Simulink的模型中,然后通过RTW的xPC Target选项,将模型下载到另一台运行在xPC Target实时内核的x86体系计算机上,这时模型在xPC实时内核上实时地运行。xPC支持的板卡和I/O数量种类丰富,是理想的快速原型实现和硬件在回路仿真的测试工具。
在第三方硬件支持中,目前最流行的也是性能较高的就是德国dSPACE公司开发的dSPACE系统。dSPACE系统是一套基于MATLAB/Simulink的控制系统开发及测试平台,实现了与MATLAB/Simulink的无缝连接。在MATLAB/Simulink和dSPACE系统的支持下,可以完善地解决控制系统的快速原型开发和硬件在回路仿真中遇到的各种问题,使工程师可以将自己的精力集中在控制系统算法的开发中,而不是耗费在大量繁琐的代码编写中。
dSPACE系统的主要特点如下: * 组合性强:dSPACE系统设计了各种标准的组件系统,可以对系统进行任意的组合和配置,可以选择不同的处理器板卡,也可以针对具体的应用选择性能不同的I/O板卡。 * 易于掌握:由于dSPACE系统和MATLAB/Simulink产品之间的无缝连接,使掌握了MATLAB的广大工程技术人员可以轻松掌握dSPACE系统。
* 快速性好:由于dSPACE系统和MATLAB/Simulink产品之间的无缝连接,整个生成代码、编译、下载过程由计算机自动完成,而修改参数再次生成代码、编译、下载只需要几分钟,从而可以在短时间内对原型进行反复的更改和试验,减少了以往大量的编码修改、编写的时间,极大地提高了工作效率。 此外,dSPACE系统还具有较高的实时性、可靠性,而且通过不同的板卡配置提供了灵活多变的应用,从而适应用户的各方面要求。
关于dSPACE系统的详细信息, 请浏览该公司的网站:http://www. dspaceinc 像各种单片机一样,HC12、C166等主要用于控制系统中嵌入式控制器的处理器在回路中的仿真开发,特别是Embedded Target for TI C6000 DSP能够将Simulink框图化的模型转变成直接在C6000系列DSP开发板或者EVM板上运行的可执行程序,从而直接通过硬件设备来验证系统的算法。 另外,MATLAB开放性的可扩充体系允许用户开发自定义的系统目标,利用Real-Time Workshop Embedded Coder能够直接将Simulink的模型转变成效率优化的产品级代码,代码不仅可以是浮点的,还可以是定点的。
1.2 MATLAB的桌面环境 在运行MATLAB之前首先要在自己的操作系统中安装MATLAB,目前MATLAB可以在Windows、Red-hat Linux、Sun Solaris、MAC OS等操作系统中安装使用。如果读者使用Windows操作系统,则建议使用Windows 2000 或者Windows XP Professional版本作为MATLAB的运行平台。运行MATLAB时,可以双击MATLAB的图标,或者在命令行提示符(控制台方式)下键入指令:matlab,这时将启动MATLAB的图形桌面工具环境。
MATLAB的桌面环境可以包含多个窗口,这些窗口分别为历史命令窗口(Command History)、命令行窗口(Command Window)、当前目录浏览器(Current Directory Browser)、工作空间浏览器(Workspace Browser)、目录分类窗口(Launch Pad)、数组编辑器(Array Editor)、M文件编辑器/调试器(Editor/Debugger)、超文本帮助浏览器(Help Navigator/Browser),这些窗口都可以内嵌在MATLAB主窗体中,组成MATLAB的用户界面。其中当MATLAB安装完毕并首次运行时,展示在用户面前的界面为MATLAB运行时的缺省界面窗口,如图1-8所示。
图1-8 MATLAB默认的用户界面
MATLAB 6.5的缺省界面和MATLAB 6.1的缺省界面相比还是有一定变化的,主要就是在界面的左下角有一个名为“Start”的启动菜单,在这个菜单中可以执行MATLAB产品的各种工具,并且可以查阅MATLAB包含的各种资源,它的功能和MATLAB的目录分类窗口(Launch Pad)功能非常类似。在默认的缺省用户界面中,新版本的MATLAB中没有了目录分类窗口(Launch Pad),而是工作空间浏览器(Workspace Browser)。 MATLAB启动的界面可以具有多种默认的选择,用户可以通过MATLAB界面中的“View”菜单下的“Desktop Layout”子菜单下的命令选择不同的MATLAB界面,这些命令分别为:
* Default:缺省的界面,如图1-8所示。包含历史命令窗口(Command History)、命令行窗口(Command Window),此外工作空间浏览器(Workspace Browser)和当前目录浏览器(Current Directory Browser)两个窗口层叠在一起。 * Command Windows Only:仅包含命令行窗口(Command Window),此时MATLAB界面的外观类似于旧版本的MATLAB。 * Simple:包含两个窗口——命令行窗口(Command Window)和历史命令窗口(Command History),两个窗口并列在界面中,如图1-9所示。
图1-9 选择Simple菜单命令的界面
* Short History和Tall History:这两个菜单命令包含的窗口类型和数量同默认的界面完全一致,不过排放的顺序不同,如图1-10、1-11所示。
图1-11 选择Tall History菜单命令的界面
* Five Panel:包含所有的MATLAB桌面窗口,在MATLAB界面中各个窗口处于平铺状态,如图1-12所示。
在MATLAB用户界面的View菜单下还有一些菜单命令可以用来选择显示在图形界面中的窗口,用户可以根据自己的喜好选择配置用户界面。在本小结提及的各种用户交互的窗口将在后续的章节中详细讲述。一般情况下,建议用户选择“Command Windows Only”方式来运行MATLAB。在这种启动方式下,MATLAB的启动速度比较快,占用的资源略少。
1.3 Command Windows和MATLAB指令 1.3.1 命令行窗口 MATLAB的命令行窗口不仅可以内嵌在MATLAB的用户界面中,还可以浮动在界面上,单击命令行窗口上的按钮,就可以浮动命令行窗口,如图1-13所示。 若希望重新将命令行窗口嵌入到MATLAB的界面中,可以执行“View”菜单下的“Dock Command Window”命令即可。 MATLAB的命令行窗口无论是外观还是使用方法,从其4.x的版本起就已经没有明显的变化了,它最具特色的就是其命令回调的功能,也就是说在MATLAB的命令行窗口键入任意算术表达式,系统将自动解算,并给出结果,见例子1-1。
图1-13 浮动的MATLAB命令行窗口
例子1-1 计算算术表达式 。 只要直接在MATLAB的命令行窗口中键入: >> -5/(4.8+5.32)^2↙ 系统将直接计算表达式的结果,并且给出答案: ans = -0.0488
注意: ● 这里的符号“>>”为MATLAB的命令行提示符。 ● 这里的符号“↙”表示键入表达式之后按回车键。 ● MATLAB的数学运算符同其他的计算机高级语言(例如C语言)类似。 ● 这里计算得到的结果显示为ans,ans是英文单词“answer”的缩写,它是MATLAB默认的系统变量。 ● 所有MATLAB的计算结果和数值都默认使用双精度类型显示。
例子1-2 计算复数的运算(1+2i)×(1?3i)。 在MATLAB命令行窗口中键入: >> (1+2i)*(1-3i) ↙ 系统直接计算表达式的结果,并给出答案: ans = 7.0000-1.0000i
注意: 在MATLAB中表示复数,按照例子1-2中所示的样式,即x±yi,其中x和y都是双精度的数字。在这里,i作为复数单位存在,同样也可以使用j表示复数单位。 上面的两个例子中都是将MATLAB直接作为计算器来使用的,在MATLAB的命令窗口中还可以定义相应的MATLAB数据对象和变量以及调用函数。
例子1-3 调用函数。 >> cos(pi/2) ans = 6.1232e-017 >> exp(acos(0.3)) 3.5470
在例子1-3中调用余弦函数求π/2的余弦值,但是一般的数学知识告诉我们π/2的余弦应该为0,但是MATLAB求的数值不是0,而是一个近似为0的数值,这都是由MATLAB浮点数的计算精度引起的。在调用函数的时候,需要注意括号的作用,它会造成主计算优先级的变化。例子1-3在计算第二个表达式的时候,首先计算反余弦函数,然后再计算指数函数。
MATLAB的功能是通过大量的M语言函数或者MATLAB内建的指令来完成的,在命令行窗口中,调用这些函数的方法就是直接键入函数或者指令,并且根据不同的函数提供相应的参数列表。MATLAB的命令行窗口具有命令行记忆的功能,也就是说,在命令行窗口中,使用上、下光标键就可以重复以前键入的指令了,这对使用MATLAB是非常便利的功能。而且MATLAB还具有局部记忆的功能,例如在MATLAB的命令行窗口中曾经执行了一个函数testcommandwindows,那么再次运行该函数时,只要在命令行中键入test,然后按光标上键↑,整条命令就会出现在命令行窗口中,这时按回车键就可以执行该指令了。
1.3.2 设置命令行窗口的显示方式 其实MATLAB的计算结果除了用图形方式进行可视化输出以外,在大多数情况下,都是在命令行窗口中输出的,而且命令行窗口中的文本输出形式,例如文本的字体、字号或者色彩等都可以根据用户的需要自定义。设置的方法是执行“File”菜单下的“Reference”命令,在弹出的对话框中,选择左边选项中的“Command Window”项,然后展开“Font & Colors”子选项,对话框的右边则出现可以设置的文本输出特性,如图1-14所示。 一旦通过图1-14所示的对话框对各种文本的显示属性进行了设置,在单击“Apply”按钮或者“OK”按钮时属性值就会立即生效,而且设置的属性也会被永久保留下来,在下一次启动MATLAB时将直接使用设定的属性。
图1-14 设置命令行窗口的文本属性
在命令行窗口中显示数值计算的结果具有一定的格式,例如在上一小节的两个例子中,所有的数值都是按照MATLAB默认的数字显示格式——短(short)格式显示的,在这种表示方法下具有固定的格式,保留小数点后四位有效数字,对于大于1000的数值,使用科学计数法表示。设置数据的显示格式需要使用format指令,具体的使用方法如表1-2所示,在表格中使用的示例数据为自然对数的底数。
表1-2 MATLAB命令行窗口显示数据的格式
例子1-4 使用不同的数据显示格式显示数字。 在MATLAB命令行中,键入下面的指令: >> pi ans = 3.1416 >> format long 3.14159265358979 >> format + +
例子1-4中使用MATLAB的内建函数pi获取常数π的数值,也可以将pi看作是MATLAB的常数。MATLAB的常数将在后面的章节中详细讲述。从例子1-4中可以看出,在不同的数据显示格式下,显示的数据位数不尽相同,大家可以根据自己的需要,设置数据显示的位数。
1.3.3 常用的控制指令 MATLAB包含的函数可以粗略地分为两大类,其中之一是执行各种具体计算或者数据处理功能的函数,例如cos函数、sqrt函数等,而另外一类是进行用户环境控制的指令,比如退出MATLAB会话、执行操作系统的功能等。在表1-3中对一些常用的控制指令进行了总结。
表1-3 常用的MATLAB控制指令
例子1-5 常用的控制指令示例。 >> %察看当前的路径 >> pwd ans = D:\Temp 例子1-5 常用的控制指令示例。 >> %察看当前的路径 >> pwd ans = D:\Temp >> %显示当前路径下的文件和子目录 >> dir . .. FigureMenuBar.fig How am I suppose to live without you.mp3 Java
Said I loved you ,but I lied.mp3 eagles_hotelcanifornia.mp3 gui_soln.fig gui_soln.m mymesh.m test.m >> %显示当前路径下的MATLAB文件 >> what M-files in the current directory D:\Temp gui_soln mymesh test >> %what指令的路径 >> which what what is a built-in function.
>> %察看M文件的路径 >> which logo E:\MATLAB6p5\toolbox\matlab\demos\logo.m >> %执行系统指令 >> system('copy eagles_hotelcanifornia.mp3 eagles.mp3') 已复制 1 个文件。 ans =
依次执行例子1-5的指令可以得到相应的指令输出,注意what指令和dir指令的区别。另外,在执行系统指令的时候还可以使用MATLAB的“ >> !copy eagles_hotelcanifornia.mp3 eagles.mp3 两者的区别在于通过system指令执行系统命令能够获取系统指令的返回值,例如指令执行的状态等。system指令的一般使用方法为 system('command');
其中,command就是系统指令,用单引号“'”括起来作为参数传递给system指令。 在使用which指令的时候得到的输出根据which指令后面的参数不同而不同,例如在执行which what时,系统判断what为内建(build-in)的函数,而在执行which logo指令时,系统判断logo为M文件,并且给出了M文件所在的路径。有关内建函数或者M文件函数的概念将在本书的第四章中详细讲述。
1.4 Command History 和历史记录 1.4.1 命令行历史窗口 1.4.1 命令行历史窗口 在默认的MATLAB界面中,命令行历史窗口总是在MATLAB界面的左下角,和命令行窗口类似,命令行历史窗口也可以浮动出来,单击命令行历史窗口界面上按钮,就可以浮动该窗口,如图1-15所示。同样,通过“View”菜单下的“Dock Command History”指令也可以将命令行历史窗口内嵌回MATLAB的界面中。
图1-15 MATLAB的历史记录窗口
在命令行历史窗口中主要记录了在MATLAB命令行窗口中键入的所有指令,一般包括每次启动MATLAB的时间,以及每次启动MATLAB之后键入的所有MATLAB指令。这些指令不但可以清楚地记录在命令行历史窗口中,而且还可以被再次执行,它们不仅能够被复制到MATLAB的命令行窗口中,而且还可以通过这些指令的记录直接创建M文件,这些功能都可以通过命令行历史窗口的快捷菜单来方便地完成,如图1-16所示。
图1-16 命令行历史的快捷菜单
快捷菜单中的指令说明如下: * Copy:拷贝当前选中的指令,可以将指令粘贴到其他的应用程序窗口中。 * Evaluate Selection:执行当前选中的指令。 * Create M-File:把当前选中的指令创建一个新的M文件,文件的内容就是选中的所有指令。 * Delete Selection:从命令行历史窗口中删除当前选中的指令。 * Delete to Selection:将当前选中指令之前的所有历史记录指令从命令行历史窗口中删除。 * Delete Entire History:删除命令行历史窗口中所有的指令。
例子1-6 命令行历史窗口的应用。 继续前面例子1-5的应用,在命令行历史窗口中,输入下面几条命令(如图1-17所示): %执行系统指令 system('copy eagles_hotelcanifornia.mp3 eagles.mp3') clear all
图1-17 选择多条命令行历史语句运行
然后单击鼠标右键,在弹出的快捷菜单中,选择“Evaluate Selection”命令,重复运行这些指令。 执行单条指令的方法更简便,只要在命令行窗口中用鼠标左键双击指令就可以了。 MATLAB主要将所有历史命令都保存在一个历史记录文件中,这个文件位于系统路径下,一般不需要进行编辑。用户可以通过设置命令行历史窗口的属性来设置有关文件,执行“File”菜单下的“References”命令,在命令行历史窗口属性设置对话框中,可以设置有关命令行历史窗口的属性,如图1-18所示。
图1-18 命令行历史窗口的属性设置
1.4.2 diary指令 diary指令也是常用的MATLAB命令行指令之一,该指令的功能是创建一个日志文件,在这个文件中,能够把所有在MATLAB命令行键入的指令以及在命令行窗口的输入保存下来。这个日志文件为纯文本格式,可以利用任何一种文本编辑器编辑这个文件。 diary指令的常用方法如下: * diary:在历史日志记录指令On和Off状态之间切换。 * diary on:打开历史日志记录功能。 * diary off:关闭历史日志记录功能。 * diary('filename'):创建日志文件,文件名为filename。
在使用diary指令时,若不指定文件名,则MATLAB自动创建一个默认文件名diary(注意,该文件没有扩展名,为纯文本文件)的日志文件,并且进入到历史日志记录状态。在日志文件中将记录所有在命令行窗口中键入的指令以及这些指令运行的结果。注意,diary记录指令的功能也仅在执行diary指令之后的MATLAB会话中有效,一旦关闭了MATLAB再次启动时,则diary指令需要重新键入。
1.5 Current Directory和搜索路径 MATLAB加载任何文件、执行任何指令都是从当前的工作路径下开始的,所以MATLAB也提供了当前路径的浏览器——Current Directory,该工具在默认的情况下位于MATLAB界面的左上方,在工作空间浏览器的下面,可以单击“Current Directory”标签切换界面。和其他的桌面工具类似,当前路径浏览器不仅可以浮动在所有窗口上方,而且还可以像默认的状态那样内嵌在桌面工具中,浮动的窗口如图1-19所示。
图1-19 浮动的当前路径察看器
在如图1-19所示的完整的路径察看器中,还可以察看必要的M文件和MAT文件信息,如果在M文件中编写了帮助文档,则相应的帮助信息将显示在窗口的下方,同样MAT文件中包含的变量信息也会显示在这里。
当前路径察看器也可以通过相应的属性设置对话框设置其显示的外观。执行“File”菜单下的“Preferences”命令,弹出如图1-20所示的对话框。 图1-20 设置当前路径察看器的属性
在对话框中可以设置有关当前路径察看器的属性,其中比较重要的就是History栏目,这里主要设置在MATLAB界面中Current Directory下拉框中显示的路径个数,默认的数值为20个。Current Directory下拉框能够将最近访问过的20个路径信息保存起来,便于用户快速地回访到那些已经访问过的路径。有些时候发生了路径的变化,或者不需要保留这些路径信息时,则可以单击“Clear History”按钮,将该下拉框中的路径信息删除,删除后,仅保留当前的工作路径。
1.5.2 工作路径 MATLAB的工作路径就是当前的路径,MATLAB启动时采用默认的路径作为当前工作路径,这样所有的MATLAB文件保存和读取都将从该路径下开始。在Windows平台下,MATLAB提供了一个路径:$matlabroot\work,在MATLAB首次启动时,就会使用该路径作为当前的工作路径。 注意: 对于Unix平台,将当前启动MATLAB的路径作为工作路径。
启动时选择的工作路径是可以修改的,一般来说,可以利用MATLAB的Startup脚本文件完成,该脚本文件在MATLAB启动时自动被执行,可以将设置工作路径的指令(cd指令)添加到该文件中,则每次启动MATLAB的时候将自动地切换到该路径下。 对于Windows平台还有一种方法进行路径设置。在桌面上选择MATLAB应用程序的快捷图标,然后单击鼠标右键,在弹出的快捷菜单中选择“属性”命令,在弹出的对话框中有一个“起始位置”文本输入框,可以将需要设置的启动工作路径设置在这里,如图1-21所示。
图1-21 设置工作起始位置 修改MATLAB的起始位置
1.5.3 搜索路径 如前文所述,MATLAB的文件是通过不同的路径来进行组织管理的,为了避免执行不同路径下的MATLAB文件而不断切换不同的路径,MATLAB提供了搜索路径机制来完成对文件的组织和管理。 所有的MATLAB文件都被保存在不同的路径中,那么将这些路径按照一定的次序组织起来,就构成了搜索路径。当执行某个MATLAB指令时,系统将按照以下的顺序搜索该指令:
* 首先判断该指令是否为变量。 * 然后判断该指令是否为内建的函数。 * 接着在当前的路径下搜索是否存在该指令文件。 * 最后从搜索路径中依次搜索该文件直到找到第一个符合要求的M文件为止。 * 若上述的搜索都没有找到该指令,则报告错误信息。 MATLAB按照上面的顺序来判断指令的执行,并且仅执行第一个符合条件的指令。
注意: 实际的指令解析顺序要更复杂一些,将在本书后面的章节中再次详细讲述。 设置搜索路径可以通过MATLAB指令,也可以通过对话框界面完成。执行“File”菜单下的“Set Path”指令,在弹出的对话框中可以设置相应的搜索路径,如图1-22所示。
图1-22 MATLAB的搜索路径设置对话框
通过“Add Folder”或者“Add with Subfolders”按钮将路径添加到搜索路径列表中,对于已经添加到搜索路径列表中的路径可以通过“Move to Top”等按钮修改该路径在搜索路径中的顺序,对于那些不需要出现在搜索路径中的内容,可以通过“Remove”按钮将其从搜索路径列表中删除。 在修改完搜索路径之后,则需要保存搜索路径,这时单击对话框中的“Save”按钮就可以完成该工作。单击“Save”按钮时,系统将所有搜索路径的信息保存在一个M文件中——pathdef.m,有兴趣的读者可以察看该文件的内容,通过修改该文件也可以修改搜索路径。有关搜索路径的详细信息请参阅MATLAB的帮助文档。
以上设置路径的方法也可以通过指令来完成,这些指令如下: * path:察看或者修改路径信息。 * addpath:添加路径到搜索路径中。 * rmpath:将路径从搜索路径列表中删除。 * path2rc:保存搜索路径信息。 * pathtool:显示搜索路径设置对话框。 * genpath:生成路径字符串。
例子1-7 设置MATLAB搜索路径的指令使用示例。 >> %显示当前的搜索路径信息 >> path MATLABPATH E:\MATLAB6p5\toolbox\matlab\general E:\MATLAB6p5\toolbox\matlab\ops E:\MATLAB6p5\toolbox\matlab\lang E:\MATLAB6p5\toolbox\matlab\elmat >> %生成路径字符串 >> p = genpath(pwd) p = …
… D:\TEMP;D:\TEMP\Class >> %添加搜索路径 >> addpath(p,'-end') >> %察看路径信息 >> path MATLABPATH E:\MATLAB6p5\toolbox\matlab\general E:\MATLAB6p5\toolbox\matlab\ops E:\MATLAB6p5\toolbox\matlab\lang E:\MATLAB6p5\toolbox\matlab\elmat D:\TEMP D:\TEMP\Class …
在例子1-7中主要使用了genpath命令从当前的路径中生成路径字符串,使用addpath命令将路径字符串添加到搜索路径的末端。有关这些函数(指令)的详细说明请参阅MATLAB的帮助文档。 在MATLAB Release 13中为了提高系统的运行性能,提供了一个新特性——Toolbox Path Cache,该特性将所有MATLAB工具箱路径和路径下面的文件名称保存在Cache文件中,这样,在调用工具函数的时候,就能够大大提高程序调用的速度。在每次启动MATLAB的时候都可以看到如下的信息: Using Toolbox Path Cache. Type "help toolbox_path_cache" for more info.
在使用新版的MATLAB时,不要将用户自己定义的MATLAB文件随意地添加到工具箱路径下,也不要任意地修改工具箱路径下已有的文件。因为修改后的文件很有可能没有被重新加载到Toolbox Path Cache中,而且一旦重新安装了MATLAB或者卸载了MATLAB则已有的工作不会被保留下来。用户可以通过属性设置对话框,设置有关工具箱路径高速缓存的属性,若用户不需要使用高速缓存的时候,则取消对复选框“Enable toolbox path cache”的选择。 另外在MATLAB安装完毕首次运行的时候,还会出现如下信息: MATLAB Toolbox Path Cache is out of date and is not being used.
用户不必理会此信息,在下一次启动MATLAB的时候,更新后的高速缓存将直接发挥作用。 一般来说,在对MATLAB工作路径的文件进行了修改之后,需要更新工具箱路径高速缓存,或者在针对MATLAB的部分模块进行了更新升级之后,也需要更新工具箱路径高速缓存。其实每次MATLAB在启动的时候,都会检查路径缓存,并且进行必要的更新。在需要人工干预的时候,可以单击属性设置对话框上的“Update Toolbox Path Cache”按钮,或者使用指令rehash。设置路径高速缓存的界面如图1-23所示。
设置工具箱路径高速缓存 图1-23 设置路径高速缓存
1.6 Launch Pad和Start菜单 MATLAB的Launch Pad和Start菜单从功能上看非常相似,所以在新版本的MATLAB 6.5中,就没有将Launch Pad作为默认的MATLAB界面工具。无论是通过Launch Pad还是Start菜单,都能够访问、使用所有MATLAB产品的资源,包括文档、工具、演示示例等。 Launch Pad提供了一个简单的窗口界面,具有MATLAB产品的树状列表,通过树状列表就可以访问所有的资源。在Start菜单界面上以菜单的形式显示所有工具的列表,大家可以像访问Windows的“开始”菜单一样来使用MATLAB的Start菜单。
悬浮的Launch Pad窗口如图1-24所示。这里将所有的MATLAB产品分为四类:MATLAB、Toolboxes、Simulink和Bloclksets,单击任何一类名称前的加号,则可以显示该类产品下的产品、工具等,例如在图1-25中,显示了MTALAB产品下的工具以及相关的工具箱。
图1-24 Launch Pad窗口
图1-25 展开工具的Launch Pad窗口
和Launch Pad类似,MATLAB的Start菜单也包含相应的分组内容,如图1-26所示。
在Launch Pad和Start菜单上主要有四类图标,它们的意义分别如下: :可用工具,例如MATLAB中的GUIDE。 :MATLAB的帮助文档。 :MATLAB系统自带的演示示例。 :MATLAB的网上资源,包括产品说明等。 大家可以根据自己的使用爱好,选择Launch Pad或者使用Start菜单完成相应的功能。
1.7 使 用 帮 助 1.7.1 在线帮助 所有的MATALB函数都具有自己的帮助信息,这些帮助信息都保存在相应的函数文件的注释区中,这些帮助信息是由那些编写函数的工程人员在编写函数的同时添加在函数内的,所以,这些信息能够最直接地说明函数的用途,或者函数需要的一些特殊的输入参数,以及函数的返回变量等。甚至在有些函数中,将函数采用的算法也在这里加以了说明。另外,在线帮助的获取需要通过具体的指令,才能将在线帮助显示在命令行窗口中,所以获取在线帮助的过程也非常快捷,因此,使用MATLAB的用户最常用的帮助就是在线帮助。获取在线帮助的方法是使用指令help或者helpwin。
… 例子1-8 获取在线帮助。 在MATLAB命令行窗口中,键入如下的指令: >> %获取帮助主题 >> help 例子1-8 获取在线帮助。 在MATLAB命令行窗口中,键入如下的指令: >> %获取帮助主题 >> help HELP topics: matlab\general - General purpose commands. matlab\ops - Operators and special characters. matlab\lang - Programming language constructs. matlab\elmat - Elementary matrices and matrix manipulation. matlab\elfun - Elementary math functions. …
… >> %获取帮助主题下的函数列表 >> help elfun Elementary math functions. Trigonometric. sin - Sine. sinh - Hyperbolic sine. asin - Inverse sine. asinh - Inverse hyperbolic sine. … >> %获取具体函数的帮助 >> help sin SIN Sine. SIN(X) is the sine of the elements of X. Overloaded methods help sym/sin.m
在例子1-8中,使用的省略符号是为了缩减篇幅而用,在实际的MATLAB中,将给出全部内容。 >> %在窗口中显示在线帮助信息 >> helpwin sin 这时sin函数的在线帮助信息将显示在帮助窗口中,如图1-27所示。
图1-27 将在线帮助的内容显示在窗口中
所有的MATLAB函数还具有一类在线帮助,叫做H1帮助行,这部分内容为每一个M语言函数文件的在线帮助的第一行,它能够被lookfor函数搜索、查询,因此在这一行帮助中,往往是言简意赅的说明性语言,在所有的帮助中相对最重要。例如,在MATLAB命令行窗口中键入: >> %使用H1帮助行 >> lookfor Fourier FFT Discrete Fourier transform. FFT2 Two-dimensional discrete Fourier Transform. FFTN N-dimensional discrete Fourier Transform. IFFT Inverse discrete Fourier transform. IFFT2 Two-dimensional inverse discrete Fourier transform. IFFTN N-dimensional inverse discrete Fourier transform.
1.7.2 窗口帮助 尽管在线帮助使用起来简便、快捷,但是在线帮助能够提供的信息毕竟有限,而且并不是所有与函数有关的内容都可以用在线帮助的形式表示,比如数学公式,图形等。因此,MALTLAB还提供了内容更加丰富的帮助文档,作为MATLAB的用户指南出现。目前MATALB的帮助文档有英文版和日文版,而在中国地区使用的MATLAB只有英文版的帮助文档。 MATLAB的帮助文档显示在MATLAB的帮助窗口中,单击MATLAB用户界面上的按钮,将打开MATLAB的帮助文档界面,如图1-28所示。
图1-28 MATLAB的帮助文档界面
这里能够看到的MATLAB帮助文档是跟随MATLAB产品一同发布的文档光盘经过安装之后的超文本内容。界面中的“Contents”标签页罗列了所有产品帮助文档的目录,单击这些目录以及目录下面的文章标题,就可以在右边的窗体中具体浏览帮助信息。除此之外,还具有下面几个标签页: * Index标签页:关键字索引查询。 * Search标签页:关键字全文搜索。 * Demos标签页:MATLAB演示例子。 * Favorites标签页:个人喜好的书签页。
在这些标签页中,用户使用频率最高的就是“Contents”页。一般地,学习MATLAB不可避免地需要阅读帮助文档,而就笔者的经验而言,直接阅读帮助文档是最直接、最有效地学习MATLAB的方法。 此外,使用频率最高的就是“Demos”页了,如图1-29所示。MATLAB为每一个工具箱或者模块都设计了很多演示示例,通过这些例子学习MATLAB往往能够起到事半功倍的效果,这些演示程序的作用非常独特,往往连帮助文档都无法替代其功用。所以,对于初学者来说,在阅读帮助文档的基础上,多研习MATLAB的Demos,是一种学习MATLAB的最佳方法。
图1-29 MATLAB帮助浏览器的Demos页
MATLAB的帮助文档除了超文本格式的以外,还具有PDF格式的帮助文档,这些帮助文档与MATLAB的产品手册(纸版)一一对应,甚至在新版的MATLAB中,PDF文件格式的帮助文档的内容要多于超文本格式的文档,更是多于纸版的手册。所以,在必要的情况下,可以将部分PDF格式的文档打印出来作为手册保存。
MATLAB 6.5的PDF格式文档可以在MATLAB产品光盘的第三张光盘上直接察看到,阅读这些文档,需要安装Adobe Acrobat Reader 4.0以上版本的阅读器。 尽管MATLAB的帮助文档比较详实、规范,用户在使用MATLAB的过程中,不可避免地还是会遇到一些问题,这个时候可以使用MATLAB的网上资源。利用MATLAB图形用户界面上的“Web”菜单下的指令可以直接访问MATLAB的网上资源,MATLAB的“Web”菜单如图1-30所示。
图1-30 MATLAB的Web菜单
1.7.3 操作帮助的函数 MATLAB还提供了一些函数用于显示帮助信息和操作帮助浏览器,如表1-4所示。
表1-4 帮 助 函 数
1.8 本 章 小 结 本章是学习MATLAB软件的基础章节。在本章首先介绍了MATLAB的产品体系,然后着重介绍了MATLAB的各种桌面工具的使用方法。通过本章的学习,读者应该能够对MATLAB的产品,以及MATLAB的基本使用方法有所了解,为学习后面的章节,或者进一步学习其他内容打下良好的基础。 在所有MATLAB桌面工具中,用户使用频率最高的就是MATLAB的命令行窗口,通过该窗口几乎能够实现MATLAB的所有功能,甚至一些常用的MATLAB图形化工具也能够通过命令行窗口的指令来调用执行。
在其他的桌面工具中,最重要的工具就是MATLAB的帮助系统,学会使用帮助系统是掌握MATLAB非常重要的一步。MATLAB的帮助系统由在线帮助和窗口帮助两部分组成,两种帮助都有自己的特色。一般的来说,通过在线帮助获得信息最快捷,而通过窗口帮助得到的信息最全面。笔者希望读者在以后学习使用MATLAB的过程中,出现的问题都通过查阅帮助文档来加以解决,因为,只有这样才能够得到真正的提高。 在本书后面的章节中将陆续介绍MATLAB其他的图形用户界面工具,例如工作空间浏览器(Workspace)、M文件性能剖析器(Profiler)等。