1、MATLAB基础及应用,陆伟艳 2016.01 mixiao_,课程的性质、目的和任务,Matlab 是一个可视化的计算程序,被广泛地应用在科学运算领域里。它具有功能强大、使用简单等特点,内容包括:数值计算、符号计算、数据拟合、图形图像处理、系统模拟和仿真分析等功能。此外,用Matlab还可以进行动画设计、有限元分析等。本课程的目的是使学生能够运用Matlab进行一般的工程计算,掌握Matlab的基本技术(基本计算、矩阵处理、符号运算和图形显示技术等),为将来从事工程技术方面的产品开发、科学研究、工程计算和管理打下一定的基础。,教学基本要求,1.了解Matlab语言特点、熟悉Matlab视窗环
2、境、掌握Matlab帮助功能的基本使用方法。 2.掌握Matlab中变量和函数的有关概念、以及矩阵和多项式的构造方法。掌握数组运算和矩阵运算,并能够使用常用的几种常用的函数进行简单问题的求解。 3.搞清符号变量和符号表达式的定义,并能用符号运算解决一般的微积分和方程求解问题。掌握Matlab程序设计的几种基本控制转移语句,学会使用简单M文件的编程。 4.掌握二维平面图形和三维立体图形的绘制方法,进行数据可视化处理。理解用户图形界面程序的构造,掌握编程方法。 5.能够利用Matlab进行简单的通讯与电子工程项目的仿真,第1章 Matlab概述,1.1、Matlab简介 1.2、Matlab的工作
3、环境 1.3、Matlab帮助系统,1.1 MATLAB简介-发展,1970年代中期 ,Cleve Moler博士开发了 :EISPACK(特征值求解的程序库)LINPACK(解线性方程的程序库 ),1970年代后期, Cleve Moler编写接口程序 :MATLAB,即MATrix和LABoratory前3个字母的组合,是“矩阵实验室”的缩写,它是一种以矩阵运算为基础的交互式程序语言。,1983年春,Cleve Moler和John Little用C语言开发了第二代专业版,84年,两人成立了Mathworks公司,正式把MATLAB推向市场。,1.1 MATLAB简介-发展,1988年,推
4、出MATLAB3.x版本(DOS版)。,1993年,推出MATLAB4.0版本(Win3.x)。,1997年,推出MATLAB5.0版(Windows95)。,1999年,推出MATLAB5.3版本R11(流行较广)。,2000年,推出MATLAB6.0版本R12 (Win98/Win2000),2001年,推出MATLAB6.1 (克服6.0不支持P4,Win me,汉字等)。,2002年,推出MATLAB6.5R13(速度更快、性能更优越等)。,2004年,推出MATLAB7版本R14,第1章 Matlab概述,2、MATLAB 的主要特点 MATLAB 的基本单位为矩阵. MATLAB
5、语言以解释方式工作. 具有非常友好的人机界面。 具有强大的作图和数据可视化功能. 具有极强的可扩展性。 3、MATLAB 的基本组成 MATLAB 主程序、Simulink 动态系统仿真和 MATLAB 工具箱( Toolbox)三大部分组成。 主程序包括了 MATLAB 语言、工作环境、句柄图形、数学函数库和应用程序接口五部分.,第1章 Matlab概述,1.2、Matlab的工作环境 1. MATLAB 的启动桌面快捷方式启动开始菜单方式启动2. MATLAB和退出Matlab菜单命令/关闭按钮在Matlab命令窗口输入exit或quit,第1章 Matlab概述,MATLAB的桌面环境可
6、以包含多个窗口,这些窗口分别为历史命令窗口(Command History)、命令行窗口(Command Window)、当前目录浏览器(Current Directory Browser)、工作空间浏览器(Workspace Browser)、目录分类窗口(Launch Pad)、数组编辑器(Array Editor)、M文件编辑器/调试器(Editor/Debugger)、超文本帮助浏览器(Help Navigator/Browser),这些窗口都可以内嵌在MATLAB主窗体中,组成MATLAB的用户界面。其中当MATLAB安装完毕并首次运行时,展示在用户面前的界面为MATLAB运行时的缺
7、省界面窗口,如图1-1所示。,第1章 Matlab概述,图1-1 MATLAB默认的用户界面,第1章 Matlab概述,MATLAB 6.5的缺省界面和MATLAB 6.1的缺省界面相比还是有一定变化的,主要就是在界面的左下角有一个名为“Start”的启动菜单,在这个菜单中可以执行MATLAB产品的各种工具,并且可以查阅MATLAB包含的各种资源,它的功能和MATLAB的目录分类窗口(Launch Pad)功能非常类似。在默认的缺省用户界面中,新版本的MATLAB中没有了目录分类窗口(Launch Pad),而是工作空间浏览器(Workspace Browser)。MATLAB启动的界面可以具
8、有多种默认的选择,用户可以通过MATLAB界面中的“View”菜单下的“Desktop Layout”子菜单下的命令选择不同的MATLAB界面,这些命令分别为:,第1章 Matlab概述,Default:缺省的界面,如图1-1所示。包含历史命令窗口(Command History)、命令行窗口(Command Window),此外工作空间浏览器(Workspace Browser)和当前目录浏览器(Current Directory Browser)两个窗口层叠在一起。 Command Windows Only:仅包含命令行窗口(Command Window),此时MATLAB界面的外观类似于
9、旧版本的MATLAB。 Simple:包含两个窗口命令行窗口(Command Window)和历史命令窗口(Command History),两个窗口并列在界面中,如图1-2所示。,第1章 Matlab概述,图1-2 选择Simple菜单命令的界面,第1章 Matlab概述,Short History和Tall History:这两个菜单命令包含的窗口类型和数量同默认的界面完全一致,不过排放的顺序不同,如图1-3、1-4所示。,图1-3 选择Short History菜单命令的界面,第1章 Matlab概述,图1-4 选择Tall History菜单命令的界面,第1章 Matlab概述,Fiv
10、e Panel:包含所有的MATLAB桌面窗口,在MATLAB界面中各个窗口处于平铺状态,如图1-5所示,图1-5 选择Five Panel菜单命令的界面,第1章 Matlab概述,在MATLAB用户界面的View菜单下还有一些菜单命令可以用来选择显示在图形界面中的窗口,用户可以根据自己的喜好选择配置用户界面。在本小结提及的各种用户交互的窗口将在后续的章节中详细讲述。一般情况下,建议用户选择“Command Windows Only”方式来运行MATLAB。在这种启动方式下,MATLAB的启动速度比较快,占用的资源略少。,2. 通用窗口,MATLAB 工作界面中的常用窗口包括 命令窗口 历史命
11、令窗口 当前工作目录窗口 工作空间浏览器窗口 变量编辑窗口 M文件编辑调试窗口 所有窗口都可以单独显示, 使用Undock 和Dock 可使窗口单独出来和返回到MATLAB工作界面中。,1菜单和工具栏,默认情况下的菜单和工具栏: 【File】菜单主要用于对文件的处理。 【Edit】菜单主要用于复制、粘贴等操作,与一般Windows程序的类似,在此不作详细介绍。 【Debug】菜单用于调试程序。 【Desktop】菜单用于设置主窗口中需要打开的窗口。 【Window】菜单列出当前所有打开的窗口。 【Help】菜单用于选择打开不同的帮助系统。,第1章 Matlab概述,4. MATLAB工具栏用
12、MATLAB 的 M 文件编辑器新建一个 M 文件; 用 MATLAB 编辑器打开一个文件; 将选中的内容剪切到剪贴板; 将选中的内容复制到剪贴板; 将剪贴板中的内容粘贴到光标指定的位置; 撤消最近一次的操作; 打开 Simulink 浏览器; 打开 MATLAB 帮助窗口。,当前工作路径,1.2.1 命令窗口(Command Window),MATLAB提供给用户使用的管理功能的人机界面,在命令窗口中输入MATLAB的命令和数据后按回车键,立即执行运算并显示结果。 说明:命令窗口中的“”为命令提示符,表示MATLAB处于准备状态。 当在提示符后输入一段程序或一段运算式后【Enter】键,MA
13、TLAB会给出计算结果,并再次进入准备状态(所得结果将被保存在工作空间窗口中)。,第1章 Matlab概述,5.Command Windows运用入门 1)Command Windows指令窗口简介,在命令窗口内执行的MATLAB主要操作有: 运行函数和输入变量;控制输入和输出;执行程序,包括M文件和外部程序。,命令窗口中可直接运行MATLAB 函数,而这些函数往往又和MATLAB命令直接联系。,MATLAB在命令窗口中的语句形式为: 变量表达式;,1.2.1 命令窗口(Command Window),MATLAB提供给用户使用的管理功能的人机界面,在命令窗口中输入MATLAB的命令和数据后按
14、回车键,立即执行运算并显示结果。 说明:命令窗口中的“”为命令提示符,表示MATLAB处于准备状态。 当在提示符后输入一段程序或一段运算式后【Enter】键,MATLAB会给出计算结果,并再次进入准备状态(所得结果将被保存在工作空间窗口中)。,在命令窗口内执行的MATLAB主要操作有: 运行函数和输入变量;控制输入和输出;执行程序,包括M文件和外部程序。,命令窗口中可直接运行MATLAB 函数,而这些函数往往又和MATLAB命令直接联系。,MATLAB在命令窗口中的语句形式为: 变量表达式;,运行函数和键入变量,在命令窗口的提示符“”下 ,可以直接输入变量。例:计算A=256/41002128
15、 A=256/4-100*2+128 %从键盘输入,并单击回车键A = %屏幕显示的结果-8 MATLAB语法规定,百分号“%”后面的语句为注释语句。,例 在命令窗口中输入不同的命令和数值,并查看其显示方式。, a=0.5 a =0.5000 b=sin b = sin if a1 c=true %如果a1则c为true end c =1,1.2.2 历史命令(Command History),历史命令窗口用来记录并显示已经运行过的命令、函数和表达式。,在默认设置下,该窗口会显示自安装以来所有使用过命令的历史记录,并标明每次开启MATLAB的时间。,1.2.3 当前目录(Current Dir
16、ectory),当前目录窗口中显示了MATLAB当前工作目录下的所有文件夹与文件,以便用户对当前目录下的文件进行管理。,查看工作目录下文件的相关信息的常用命令,what:列出当前目录下的M、MAT、MEX文件清单。 dir:显示当前目录或指定当前目录下的文件。 cd 路径:改变或显示当前工作目录;路径可省略,省略时为显示当前工作目录;cd 表示回到上一级目录。 type:显示文件内容。 delete:删除文件。 which 文件名:指出M文件、MEX文件、工作空间变量、内置函数或Simulink模型所在的目录。,1.2.4 工作空间(Workplace),MATLAB在进行运算时,将变量存储在
17、内存中,这些存储变量的内存空间称为基本工作空间,简称工作空间。 工作空间窗口以列表形式显示了MATLAB工作区中当前所有变量的名称及其属性。 不同的变量类型使用不同的图标。,内存变量查阅、删除的指令操作法,在指令窗中运用who, whos查阅MATLAB内存变量。 who命令:查看现存于基本空间的变量 whos命令:详细查看现存于基本空间的变量 在指令窗中运用clear指令可以删除内存(工作空间内)的某一或所有变量 如:clear A , clear all,1.2.5数组编辑器窗口(Array Editor),启动数组编辑器窗口的方法有: 在工作空间窗口中双击该变量; 在工作空间窗口中选择变
18、量,按鼠标右键在快捷菜单中选择“Open”菜单;,1.2.6 文件编辑/调试(Editor/debugger),MATLAB通过自带的M文件编辑/调试器来创建和编辑M文件。 进入MATLAB文件编辑器的方法如下: 命令窗口直接键入命令:edit, 打开编辑器编辑Untitled.m文件。 使用命令窗口中的菜单或工具条上的快捷工具按钮。 M文件编辑/调试器窗口是标准的windows 风格。 编辑M文件可用其它任何文本编辑器进行。,1.3 MATLAB命令窗口的主要操作,命令窗口显示方式的操作 数值计算结果的显示格式 指令行中的标点符号 命令窗口中指令行的编辑 命令窗口的通用命令,命令窗口显示方式
19、的操作,二 显示方式的设置 对命令窗口的字体风格、大小、颜色和数值计算结果格式进行设置。 一 缺省显示方式 对窗口内的字符数码分类采用不同的颜色。,第1章 Matlab概述,2)最简单的计算器使用法 例1.1求 算术运算结果 (1)用键盘在Matlab指令窗口中输入以下内容 (12+2*(7-4)/32 (2)在上述表达式输入完成后,按【Enter】键,该指令被执行 (3)在指令执行后,Matlab指令窗中将显示以下结果 ans =2,第1章 Matlab概述,例1.2简单矩阵 的输入步骤(1)在键盘中输入下列内容 A=1,2,3;4,5,6;7,8,9 (2)按【Enter】键,该指令被执行
20、 (3)在指令执行后,Matlab指令窗中将显示以下结果 A =1 2 34 5 67 8 9,第1章 Matlab概述,当然我们也可以采用分行输入的形式 A=1,2,34,5,67,8,9 A =1 2 34 5 67 8 9,第1章 Matlab概述,3)计算结果的图象显示 例 1-3 绘制函数 y=2sin(1+x)的图像,并计算当 x=0.5 时的函数值。,x=(1:0.1:10); %给出自变量 x 的定义域 y=2*sin(1+x); %写出函数形式 plot(x,y) %绘出函数图形 y=2*sin(1+0.5) %求当 x=0.5 时的 y 值,其后不加分号,直接在窗口中给出结
21、果 y =1.9950 %输出 y 的计算结果,第1章 Matlab概述,例 1-4 绘制函数 y=3x3-10x2+5x-8的图像,for i=1:100x(i)=0.1*i;y(i)=3*x(i)3-10*x(i)2+5*x(i)-8; end plot(x,y),第1章 Matlab概述,5. MATLAB 通用命令,1.4 MATLAB 7.1 的其他管理,MATLAB文件格式 MATLAB 7.1的常用文件有.m、.mat、.fig、.mdl、.mex、.p等类型 。 设置搜索路径 用户自己书写的函数有可能并没有保存在搜索路径下。要解决这个问题,只需把程序所在的目录扩展成MATLAB
22、的搜索路径即可。,MATLAB文件格式,程序文件 程序文件即M文件(M-File),其文件的扩展名为.m。 图形文件 图形文件(Figure)的扩展名为.fig。 模型文件 模型文件(Model)扩展名为.mdl,可以在“File”菜单中创建Model时生成.mdl文件。 数据文件 数据文件即MAT文件,其文件的扩展名为.mat。,MATLAB文件格式,可执行文件 可执行文件即MEX文件,其文件的扩展名为.mex。 项目文件 项目文件的扩展名为.prj。 P码文件 P码文件即伪代码文件,是M文件被调用后在内存中生成的内部伪代码。,设置搜索路径,在MATLAB内存中进行检查,检查“sin”和“x
23、”是否为工作空间的变量或特殊变量; 检查“sin”和“x”是否为MATLAB的内部函数; 在当前目录上,检查是否有相应的“.m”或“.mex”文件存在; 在MATLAB搜索路径的所有其他目录中,依次检查是否有相应的“.m”或 “.mex”的文件存在; 如果都不是,则MATLAB发出错误信息。,1. MATLAB的基本搜索过程,设置搜索路径窗口(Set Path),打开设置搜索路径窗口的方法: 在MATLAB界面选择菜单“File”“Set Path”; 在命令窗口中运行“pathtool”或“editpath”命令。,3. 设置搜索路径的常用命令,path命令 path(path, 新目录)
24、addpath命令 addpath 目录1 目录2 参数,例 使用命令设置搜索路径 addpath c:TEMP -begin path (path,c:TEMP) p=path,附:在命令窗口中输入path或genpath可得到MATLAB 的所有搜索路径,,第1章 Matlab概述,1.3 Matlab帮助系统1、Matlab联机帮助#工具条中的 按钮;#help菜单栏中前2项中的任何一项;#在命令窗口中执行helpdesk或doc。,2、Matlab的网上资源web菜单栏,使用帮助浏览器,帮助主题(Contents)、索引(Index) 、搜索(Search)和演示(Demos)四个面板
25、来查找帮助信息:,Contents面板为可展开的树形结构,向用户提供全方位系统帮助的向导图; Index面板是MATLAB提供的术语索引表,可以查找命令、函数和专用术语等。 Search面板是通过关键词来查找全文中与之匹配的章节条目,Index只在专用术语表中查找而Search的搜索是在整个HTML文件中进行的,因此其覆盖面更宽。 Demos面板为MATLAB提供了Demo演示。,第1章 Matlab概述,3、Matlab常用的窗口帮助命令,MATLAB的帮助系统,1、帮助命令帮助命令是查询函数语法的最基本的方法,查询信息直接显示在命令窗口。帮助命令有help、lookfor。 help %在
26、命令窗口直接输入help,显示主要的在线帮助主题。 help 函数名 %显示关于某个具体函数的功能、调用格式、及相关函数。 help 帮助主题 %列出指定主题下的函数。例如 help elfun %列出所有基本函数。,MATLAB的帮助系统(续),lookfor image %查找有关图像的函数和命令。 2、在线帮助浏览器MATLAB6.x设计了全新的在线帮助浏览器,当在View菜单中选择了Help选项,或在Help菜单中选择了MATLAB Help选项时,都可以打开帮助浏览器。 3、演示帮助选择Help菜单中的Demos选项,可以打开演示窗口,观看要查询项的动画演示。,使用帮助命令,look
27、for 关键字 (查找) lookfor命令是在所有的帮助条目中搜索关键字,常用来查找具有某种功能而不知道准确名字的命令。如:lookfor sound 打开帮助窗口命令: helpwin:打开帮助窗口 helpdesk:打开帮助桌面 demo:打开演示窗口,第1章 Matlab概述,demo 命令,联机演示系统,可以通过以下方式打开联机演示系统。选择MATLAB主窗口菜单的【Help】|Demos】选项;在命令窗口输入demos;直接在帮助页面上选择Demos页。,第1章 Matlab概述,helpwin 命令用于打开 MATLAB 的帮助文件窗,第1章 Matlab概述,lookfor 命
28、令允许用户通过完整的或部分关键字来搜索要查找的内容 who 和 whos 的作用是列出在 MATLAB 工作内存中驻留的变量名 exist 命令用来查找或检查变量和函数的存在性,四、MATLAB的运行方式,1、命令行运行方式演算纸式的科学计算语言 在MATLAB的应用中,最基本、最简单的应用,就是在命令窗口中直接输入命令来实现计算或绘图功能。MATLAB命令行的一般形式为: 变量表达式 或: 表达式(赋值语句), 使用MATLAB最简单的方式是将MATLAB的命令窗口看作计算器,通过输入数学算式直接计算。12345ans=15 如果在输入的表达式后面跟上分号“;”,那么运行后就不会马上显示运算
29、的结果,必须键入输出变量后才能显示运算结果。用分号关闭不必要的输出会使程序运行速度成倍甚至成百倍地提高。12345; 则不会马上显示运算结果,要得到运算结果,必须ans则显示结果为ans=15,如果在表达式后面跟上逗号“,”或什么都不跟,运行后会马上显示该表达式的运算结果。 如果一个表达式很长,可以用续行号“”将其延续到下一行。 1+2+3+4+5+ %注意加号写在本行。6+7+8+9+10则输出结果ans=55如果续行号前面是数字,直接使用续行号会出现错误,有三种解决办法,一是设法使续行号前面是一个运算符号,二是先空一格再加续行号,三是再加一个点。,在一行中也可以写几个语句,它们之间用逗号“
30、,”或分号“;”隔开。A=1,2,3.3,sin(4),X=1966/310+1则输出结果A1.0000 2.0000 3.3000, -0.7568X=7.3419。,2、m文件运行方式,所谓m文件,就是用MATLAB语言编写的、可以在MATLAB中运行的程序。它是以普通文本格式存放的,故可以用任何文本编辑软件进行编辑。MATLAB提供的m文件编辑器就是程序编辑器。 在File菜单中选择NEW,再选择M-file,或点击新建图标,就可以调出m文件编辑器,用户可以用此编辑器编写m文件。 m文件有两种形式,一种称为命令文件(Script File),另一种称为函数文件(Function File
31、),两种文件的扩展名都是m。,(1)命令文件,如果要输入较多的命令,或者要经常对某些命令进行重复的输入,则可以将这些命令按执行顺序存放在一个m文件中,以后只要在MATLAB的命令窗口中输入该文件的文件名,系统就会调入该文件并执行其中的全部命令。这种形式就是MATLAB的命令文件。 命令文件中的语句可以访问MATLAB工作空间的所有变量;而在命令文件执行过程中创建的变量也会一直保留在工作空间中,其他命令或m文件都可以访问这些变量。 命令文件相当于DOS批处理文件。,求满足1+2+3+n=100,故应 对sum减n n=n-1; %当循环结束时有sum=100,故应对n减1 n,sum %显示最大
32、正整数n以及和sum,将上述程序存入文件fl.m,然后在命令窗口键入 fl显示结果为 n=13 sum=91指出:程序中由符号“%”开始的文字都是注释文字,用来对程序或程序行行进行注释说明,符号“%”称为注释符,MATLAB在执行时将忽略“%”后的内容。,(2)函数文件,函数文件是另一类m文件,可以像库函数一样方便地被调用,MATLAB提供的许多工具箱,是由函数文件组成的。 对于某一类特殊问题,用户可以建立系统的函数文件,形成专用工具箱。 函数文件的第一行有特殊的要求,它必须遵循如下的形式:function=() 其他各行都是程序运行语句,没有特别要求。 函数文件的文件名必须是.m。,实现符号
33、函数运算功能的函数m文件为: function y=sgn(x) %这是一个定义符号函数 y=sgn(x)的函数文件。 if x0y1=-1; elseif x=0 y1=0; elsey1=1; end y=y1;,将上述程序存为文件sgn.m,便可以将其作为普通的MATLAB函数来使用: x=4/3*pi; y=3*sgn(sin(x) 显示结果为: y=-3,五、MATLAB的常用命令,MATLAB可以通过菜单对工作着的窗口进行操作,也可以通过键盘在命令窗口输入命令进行操作,下面给出几个常用的通用命令。 quit 关闭MATLAB exit 关闭MATLAB clc 清除MATLAB命令
34、窗口中的所有显示内容 clear 清除工作空间中保存的所有变量其他命令可以在学习应用中逐步熟悉。,第1章 Matlab概述,上机练习(1) ( 1)以两种方式打开 MATLAB 工作窗口,进入MATLAB 6.5 的工作环境,并尝试用不同的方式退出。 ( 2)尝试、熟悉 MATLAB 6.5 的各栏菜单以及各个工具栏的功能。 ( 3)重新启动 MATLAB 6.5,进入 MATLAB 工作窗口,用 who 命令查看当前工作空间内有无变量及其值。 ( 4)绘制函数y=cos(5x+2)/sin(3x+1) 的图像,并求解当 x=2 时的函数值。 ( 5)此时再次用 who 命令查看工作空间内的变
35、量名及其值,与( 3)比较,同时用whos 命令查看变量,比较与 who 命令的不同。 ( 6)熟练掌握 MATLAB 的通用命令。 ( 7)练习并熟练掌握 MATLAB 的帮助命令,学会利用 MATLAB的帮助信息。 (8)用 lookfor 命令查找函数 cos 的信息,并与 help 命令查找的结果相比较,注意采用两种命令之间的差别。,第2章 Matlab语言程序设计,基本要求: (1) 了解Matlab的各种数据类型; (2) 掌握Matlab的运算符与操作符的含义和用法 ; (3) 掌握Matlab基本表达式并了解其常用函数分类; (4) 熟练掌握 Matlab 的程序结构(顺序结构
36、、循环结构和分支结构)与流程控制语句 ; (5) 了解并初步掌握 Matlab 的数据文件的读写; (6) 学会 Matlab 的M文件的编写方法,包括命令文件和函数文件。了解M件的调试命令和调试方法。,第2章 Matlab语言程序设计,1、 Matlab数据类型MATLAB的早期版本只有非常简单的二维数组和字符类型的数据,目前的MATLAB版本中不仅有多达十几种的基本数据类型,在不同的专业工具箱中还有特殊的数据类型,并且MATLAB还支持面向对象的编程技术,支持用户自定义的数据类型。MATLAB支持的基本数据类型见图2-1。,第2章 Matlab语言程序设计,图2-1 MATLAB的数据类型
37、,第2章 Matlab语言程序设计,获取MATLAB的数据类型列表可以在MATLAB命令行窗口中键入help datatypes命令。在图2-1中所示的各种数据类型都可以用于创建向量、矩阵或者多维数组。用户自定义的数据类型也是图示的各种数据类型的组合。在不同的MATLAB工具箱中具有自定义的数据类型,例如控制系统工具箱中定义的LTI对象,在滤波器设计工具箱中定义的滤波器对象,在符号数学工具箱中定义的符号类型数据等。这些工具箱中包含的特殊数据对象也都使用这些基本的数据类型组合构成。,第2章 Matlab语言程序设计,需要指出一点,MATLAB的基本数据类型是双精度数据类型和字符类型。MATLAB
38、的M语言和其他高级编程语言不同的是,MATLAB没有具体的变量或对象声明和定义过程,任何数据类型的变量或对象都可以利用面向对象编程技术中构造函数的方法或者数据类型转换的方法来创建其他数据类型对象和变量。MATLAB和Java语言、C+语言类似,所有数据类型就是相应的类,具有一定的面向对象的特点。MATLAB的不同数据类型的变量或对象占用的内存空间不尽相同,不同的数据类型的变量或对象也具有不同的操作函数。在本章中,将详细讲述MATLAB的基本数值类型、逻辑类型、字符串、元胞数组和结构的使用方法,其中,元胞数组是MATLAB中常用的一种独有的数据类型。,2.1 变量,1、标识符:,表示变量名,常量
39、名,函数名和文件名的字符串,(1)由字母、数字、下划线等符号组成,第一个字母必须是英文字母 。,(2)变量和常量最长不要超过19个字符,多余截取。,(3)函数和文件名通常不超过8个字符。,(4)变量名大小写敏感。,2.1 变量,(5)MATLAB中的特殊变量名,应避免使用。例如:,2.1 变量,2、变量类型 :,(1)数值:内部只有一种类型为双精度(8个字节,64位),实数为1个双精度数,复数为两个双精度数。但输出显示格式有8种。可用format命令来改变显示格式。例如:format short 显示5位数 (pi: 3.1416)format long 显示15位数(pi: 3.141592
40、65358979)format bank 显示货币格式(pi: 3.14),2.1 变量,数字显示的8种格式,指出: 自定义变量名一般不应和系统变量同名。 在MATLAB中输入的内容直接决定变量的类型。 使用who和whos命令可以查看变量。 使用clear命令可以删除所有定义过的变量。如果只是删除其中某些变量,应在clear后面指定要删除的变量名。例如 clear a z 有了变量,就可以组成表达式,也就可以对变量进行赋值。MATLAB的赋值语句有两种形式。 变量名表达式 表达式在第一种情况下,MATLAB将右边的表达式的值赋值给左边的变量,在第二种情况,MATLAB将表达式的值赋值给系统变
41、量ans。 所谓表达式,就是用运算符号把特殊字符、函数名、变量名等有关运算量连接起来的式子,其结果是一个矩阵。,2.1 变量,2、变量类型 :,(2)字符(串):用单引号表示。如:a=abc 实际上是一个单个字符的ASCII码组成的行向量。,2.1 变量,3、矩阵,MATLAB中的变量或常量都代表一个矩阵, 所有的变量运算其实都是矩阵运算。单个值实际上是1*1阶矩阵。,矩阵元素可以是数值(实数或复数)或字符串。,一个由矩阵表示的变量可以是一个数、一组数、一个文件(如语音)、一幅图象等。,2.1 变量,3、矩阵,矩阵(Matrix)与数组(Array)的关系 :矩阵运算有着严格理论数组运算一般指
42、元素运算,4、矩阵的创建,矩阵是线性代数的基本运算单元。 通常矩阵是指含有m行n列数值的矩形结构。矩阵中的元素可以是实数也可以是复数,由此可以将矩阵划分为实矩阵和复矩阵。 MATLAB支持线性代数所定义的全部矩阵运算。 在MATLAB中创建矩阵应遵循以下原则: 矩阵的元素必须在方括号“ ”中。 矩阵的同行元素之间用空格或逗号“,”分隔。 矩阵的行与行之间用分号“;”或回车符分隔。 矩阵的尺寸不必预先定义。 矩阵元素可以是数值、变量、表达式或函数。如果矩阵元素是表达式,系统将自动计算出结果。,2.1 变量,4、变量的查看:,who/whos,5、变量的保存和恢复:,save 文件名 (缺省后缀为
43、.mat) 例如:save myvar load 文件名 例如:load myvar,2.2 矩阵的赋值,1、矩阵的直接赋值,(1)基本赋值1)使用 2)同一行元素用空格或,隔开 3)不同行用;隔开 例如:a=1 2 3;4 5 6,(2)复数的赋值:例如:z=1+2i或1+2j z=1+2i 3+4i z=1 3+2 4*i,直接输入法在命令窗口按规则输入方式创建矩阵例1.在命令窗口创建简单的数值矩阵。A=1 3 2;3 1 0;2 1 5回车后在命令窗口显示如下结果A =1 3 23 1 02 1 5例2.在命令窗口创建带运算表达式的矩阵,不显示结果。y=sin(pi/3),cos(pi/
44、6);log(20),exp(2);输入“y”回车,在命令窗口显示出来。y显示出的结果为y =0.8660 0.86602.9957 7.3891,指出: 在矩阵较大时,用分行输入的方式(用回车代替分号区分不同行)比较接近于线性代数中的矩阵,更直观一些。 任何矩阵元素内部不能有空格,否则会被认定是两个元素。,2、通过数据文件创建矩阵导入其他程序创建的数据例3.用记事本输入一组数据1 2 3 42 3 4 54 3 4 55 7 6 1保存为fort.txt,用load命令读入,load fort.txt输入fort就可以在命令窗口显示创建的矩阵。 fort显示结果为fort =1 2 3 42
45、 3 4 5 4 3 4 55 7 6 1,指出: 通过load命令导入数据是形成矩阵的重要方法,解决了在工作现场没有MATLAB系统和其他数据管理系统的问题,可以只用基本的文字处理工具完成。 MATLAB对文本形式的数据文件的扩展名并不计较,将上述数据文件换名保存为fort.1,仍然可以如上导入、应用。 文件名可以定义为m1.txt或m1.1。 但是,如果将文件命名为1m.txt,则显示出错信息:“Error: Missing operator(算子), comma(逗号), or semicolon(分号).” 如果文件名命名为3.txt、1.txt、3.1等,则显示的是主文件名所用的数字
46、。 数据文件保存为word或wps等的文件格式同样可以引用。,如果数据文件中有字母,则不能引用,显示出错信息,即使该字母在前面的指令中已经赋值也不可。 如果数据文件中有算式,则不能完整显示,算式元素将仅显示第一个运算符(或关系符)前的数字。 导入其他数据,如图像数据、Excel数据时,可以使用数据导入向导Import Wizard。,3、通过m文件创建矩阵将矩阵建立为m文件先将矩阵按创建原则写入一个m文件中,在MATLAB命令窗口或程序中直接运行该m文件(输入该m文件名),即可将矩阵调入工作空间。 4、通过函数创建矩阵,指出: 当某一项操作无结果时,MATLAB将返回一个空矩阵,空矩阵的大小为
47、0,但它确实存在于工作空间,可以通过变量名访问。 输入后的矩阵将保存在MATLAB工作空间中,并可以随时被访问调用,如果用户不用“clear”命令清除它,或给它重新赋值,该矩阵将一直保存在工作空间直到MATLAB关闭为止。 如果矩阵函数中只有一个参数,则为方阵。 四种创建矩阵的方法各有优点:直接输入法方便简捷;通过数据文件创建有利于调用其他软件产生的数据;通过m文件创建是用于创建较大尺寸的矩阵并便于修改;通过函数创建可以由MATLAB内部函数创建一些特殊矩阵。,5、其他构造矩阵的方法冒号法 1冒号法构造向量 冒号表达式的一般格式为: 向量名初值:步长:终值。 例4.在窗口输入 x=0:0.5:
48、2 回车后显示 x =0 0.5000 1.0000 1.5000 2.0000。 例5. 在命令窗口输入 x=2:-0.5:0 回车后显示 x =2.0000 1.5000 1.0000 0.5000 0,指出: 步长可以省略,省略步长,则步长为1。 步长可以为负,此时初值大于终值。 向量的元素比较多而又有增减规律时,这种方法非常便利。 冒号法表示向量时,向量的全体成员是从初值开始,以步长为增量,直到不超过终值的所有元素构成的序列。 冒号法的应用可以避免使用循环,提高程序运行速度。,矩阵的创建(续),2冒号法构造矩阵 一般格式为: A(:,j):表示矩阵A的第j列; A(i,:):表示矩阵A
49、的第i行。 例6.建立矩阵。解: A(1,:)=1:5 %设置矩阵的第1行 A =1 2 3 4 5,2.2 矩阵的赋值,注意:赋值结尾为“;” 则不显示结果。一行不够时,可用“”换行。 矩阵的阶数也可通过下列函数获得:对于一维,m=length(a) 为矩阵a的长度。例如: a=1 2 3length(a)为3,2.2 矩阵的赋值,注意:矩阵的阶数也可通过下列函数获得:对于二维,m,n=size(a),m为行数,n为列数例如: a=1 2 3; 4 5 6size(a)为2 3,2.2 矩阵的赋值,2、矩阵元素的赋值,(1)元素用(m,n)的形式表示第m行n列的元素值,可直接引用和赋值。 例如,a(2,1)=4, 若将其改为9,则可用a(2,1)=9。 注意:如果元素下标超出原矩阵的维数,矩阵将自动扩大,多出的元素自动为0 。,