1、第第4讲讲 MATLAB程序设程序设计计-基础知识基础知识张建瓴张建瓴1可整理ppt内容提要内容提要本章主要介绍本章主要介绍MATLAB程序设计的程序设计的有关基础知识。有关基础知识。2可整理ppt4.1 MATLAB的变量和表达式的变量和表达式一、一、MATLABMATLAB的变量及其类型的变量及其类型1 1、变量命名规则、变量命名规则(1 1)变变量量名名(包包括括函函数数名名)对对字字母母的的大大小小写写敏敏感感,即即MATLABMATLAB区分字母的大小写;区分字母的大小写;(2 2)变变量量名名的的第第一一个个字字符符必必须须为为英英文文字字母母,而而且且不不能能超过超过3131个字
2、符;个字符;(3 3)变变量量名名由由英英文文字字母母、数数字字和和下下划划线线组组成成,即即变变量量名名 可可 以以 包包 含含 下下 连连 字字 符符、数数 字字,但但 不不 能能 为为 空空 格格 符符(Backspace)Backspace)和标点。和标点。3可整理ppt2 2、局部变量和全局变量、局部变量和全局变量(1)局部变量)局部变量只只在在每每个个函函数数体体内内定定义义、使使用用,而而不不能能从从其其他他函函数数和和MATLABMATLAB工作空间访问的变量称为局部变量。工作空间访问的变量称为局部变量。(2)全局变量)全局变量在多个函数及在多个函数及MATLABMATLAB函
3、数中都能使用的变量称为全局变量。函数中都能使用的变量称为全局变量。通通常常每每个个函函数数体体内内都都有有自自己己定定义义的的变变量量,不不能能从从其其他他函函数数和和MATLABMATLAB工工作作空空间间访访问问这这些些变变量量,这这就就是是局局部部变变量量。如如果果要要使使某某个个变变量量在在几几个个函函数数及及MATLABMATLAB函函数数中中都都能能使使用用,它就是全局变量。它就是全局变量。4可整理ppt(3 3)局部变量和全局变量的区别)局部变量和全局变量的区别全全局局变变量量名名应应尽尽可可能能大大写写,并并用用“globalglobal声声明明。如如果果要要在在几几个个函函数
4、数和和MATLABMATLAB的的工工作作空空间间中中都都能能访访问问一一个个全全局局变变量量,则则需需在在每每个个函函数数和和MATLABMATLAB工工作作空空间间中中都都声声明明该变量是全局变量。该变量是全局变量。全全局局变变量量要要在在函函数数体体的的变变量量赋赋值值语语句句之之前前说说明明,整整个个函函数以及所有对函数的递归调用都可以利用全局变量。数以及所有对函数的递归调用都可以利用全局变量。【注注意意】:在在实实际际编编程程中中,应应尽尽量量避避免免使使用用全全局局变变量量,因因为为全全局局变变量量的的值值一一旦旦改改动动,则则在在其其他他包包括括该该变变量量的的函数中都将改变,这
5、样有可能会出现不可预见的情况。函数中都将改变,这样有可能会出现不可预见的情况。5可整理ppt3 3、永久变量、永久变量/预定义变量预定义变量定定义义变变量量时时,有有些些MATLABMATLAB的的保保留留字字符符不不能能用用,其其中中有有一一部部 分分 就就 是是 MATLABMATLAB的的 永永 久久 变变 量量,也也 称称 为为 预预 定定 义义 变变 量量(Predefmed Variable)Predefmed Variable)。每每当当MATLABMATLAB启启动动时时,系系统统自自动动定定义义变变量量,驻驻留留于于内内存存中中。它它们们不不会会被被命命令令clearclea
6、r清清除除(永永久久变变量量的的名名称称就就源源于于此此)。系系统统也也可可以以为为这这些些永永久久变变量量赋赋值值,但但所所赋赋的的值值可可以以用用clearclear命命令令清清除除,从从而而恢恢复复系系统统预预定定义义的的值值(预预定定义义变变量量的名字就反映这个意思)。的名字就反映这个意思)。6可整理ppt表表4-1 MATLAB的永久变量的永久变量变量名变量名含义含义ans预设的计算结果的变量名预设的计算结果的变量名EpsMATLAB定义的正的极小值定义的正的极小值=2.2204e-16pi内建的内建的值值Inf或或inf值,无限大,定义为值,无限大,定义为1/0NaN或或nan无法
7、定义一个数目,非数(无法定义一个数目,非数(Not a Number),),如如0/0i 或或 j虚数单位虚数单位nargin函数输入参数个数函数输入参数个数nargout函数输出参数个数函数输出参数个数realmax最大的正实数最大的正实数realmin最小的正实数最小的正实数flops浮点运算次数浮点运算次数【注意】:【注意】:(1 1)用用户户在在编编写写指指令令和和程程序序时时,尽尽可可能能不不对对表表4-14-1中中所所列列永永久久变变量名重新赋值,以免产生混淆。量名重新赋值,以免产生混淆。(2 2)键入)键入clearclear则是去除所有定义过的变量名称,但不能清除永久变量。则是
8、去除所有定义过的变量名称,但不能清除永久变量。7可整理ppt例例4-14-1example4_1.mexample4_1.m无穷大的使用和作用。无穷大的使用和作用。y=1/0 无穷大的使用无穷大的使用 Warning:Divide by zero.Y=Inf1/y 无穷大的作用和无穷大的作用和ans变量的使用变量的使用 ans=0【说说明明】:在在MATLABMATLAB中中,象象1/01/0这这样样的的操操作作不不会会引引起起程程序序执执行行中中断断,只只是是在在给给出出警警告告信信息息的的同同时时,用用一一个个永永久久变变量量infinf来来表表示示,而而且且这这个个变变量量和和其其他他变
9、变量量一一样样,可可在在各各种种运运算算中中发挥巨大的作用。发挥巨大的作用。8可整理ppt二、二、MATLABMATLAB基本表达式基本表达式MATLABMATLAB采采用用的的是是表表达达式式语语言言,用用户户输输入入的的语语句句由由MATLABMATLAB系系统统解解释释运运行行。用用户户可可以以在在MATLABMATLAB的的命命令令窗窗口口中中键键入入命命令令,也也可可以以在在编编辑辑器器内内编编写写应应用用程程序序,MATLABMATLAB软软件件对对此此命命令令或或程程序序中中各各条条语语句句进进行行翻翻译译,然然后后在在MATLABMATLAB环环境境下下对对它它进进行行处处理理
10、,最最后返回运算结果。后返回运算结果。MATLAB语句由表达式和变量组成,有两种表示形式:语句由表达式和变量组成,有两种表示形式:表达式表达式变量变量=表达式表达式9可整理ppt表达式书写规则表达式书写规则MATLAB表达式书写规则与表达式书写规则与“手写算式手写算式”差不多相同,具体遵循以下规定:差不多相同,具体遵循以下规定:(1 1)表达式由变量名、运算符、数字和函数名组成;)表达式由变量名、运算符、数字和函数名组成;(2 2)表达式将按常规的优先级从左至右执行运算;)表达式将按常规的优先级从左至右执行运算;(3 3)优优先先级级的的规规定定是是:指指数数运运算算级级别别最最高高,乘乘除除
11、运运算算次次之之,加减运算级别最低;加减运算级别最低;(4 4)括号可以改变运算顺序)括号可以改变运算顺序;(5 5)书书写写表表达达式式时时,赋赋值值符符“=”和和运运算算符符两两侧侧允允许许有有空空格格,以以增加可读性。但在复数或符号表达式中要尽量避免,以防出错;增加可读性。但在复数或符号表达式中要尽量避免,以防出错;(6 6)表表达达式式的的末末尾尾可可加加上上“;”“;”,也也可可以以不不加加。有有“;”“;”时时,MATLABMATLAB系系统统不不显显示示计计算算结结果果,而而是是直直接接把把数数值值赋赋给给变变量量,如如果果没没有有用用变变量量就就无无法法看看到到结结果;没有果;
12、没有“;”“;”时,时,MATLABMATLAB系统将会在该条语句的下面直接显示运算结果。系统将会在该条语句的下面直接显示运算结果。10可整理ppt4.2 MATLAB数组及其类型数组及其类型一、一、MATLABMATLAB的数据结构的数据结构MATLABMATLAB是是一一种种面面向向数数组组(Array)Array)的的编编程程语语言言,其其数数据据类类型型的的最最大大特特点点是是每每一一种种类类型型都都以以数数组组为为基基础础,从从数数组组中中派派生生出出来来的的,事实上,事实上,MATLABMATLAB把每种类型的数据都作为数组来处理。把每种类型的数据都作为数组来处理。在在MATLAB
13、MATLAB中中,有有6 6种种基基本本的的数数据据类类型型,即即:char(char(字字符符)、double(double(双双 精精 度度 数数 值值)、sparse(sparse(稀稀疏疏数数据据)、storagestorage(存存储储型型)、cell(cell(单单元元数数组组)和和Struct(Struct(结构结构)。11可整理ppt【说明】:【说明】:(1)存存储储型型是是一一个个虚虚拟拟数数据据类类型型,它它包包括括int8(8位位整整型型)、uint8(无无符符号号8位位整整型型)、intl6(16位位整整型型)、uintl6(无无符符号号16位位控型控型)、iht32(
14、32位整型位整型)和和uint32(无符号无符号32位整型位整型);(2 2)最最常常用用的的数数据据类类型型只只有有双双精精度度型型和和字字符符型型,所所有有MATLABMATLAB计算都把数据当作双精度型处理;计算都把数据当作双精度型处理;(3 3)无符号)无符号8 8位整型一般用于储存图像数据;位整型一般用于储存图像数据;(4)稀疏数据一般用于处理稀疏矩阵;)稀疏数据一般用于处理稀疏矩阵;(5)单元数组和结构数组一般用在大型程序中;)单元数组和结构数组一般用在大型程序中;(6)储储型型数数组组一一般般只只用用于于内内存存的的有有效效储储存存,可可对对这这些些类类型型的的数数组组进进行行操
15、操作作,但但不不能能进进行行任任何何数数学学运运算算,否否则则必必须须用用double函数把它转换为双精度类型。函数把它转换为双精度类型。12可整理ppt3 3、数组之间的差别、数组之间的差别MATLABMATLAB的的数数组组有有:字字符符串串数数组组(Character Character String String Array)Array)、单单元元数数组组(Cell Cell Array)Array)、结结构构数数组组(Structure Structure Array)Array)和和数数值值数数组组(Numeric Numeric Army)Army),它它们们之之间间的的基基本本
16、差别如表差别如表4-24-2所示。所示。13可整理ppt二、字符串数组二、字符串数组对对于于MATLAB编编程程来来说说,字字符符处处理理必必不不可可少少。对对于于字符串的使用应符合以下规定:字符串的使用应符合以下规定:(1)所有字符串都用单引号括起来;)所有字符串都用单引号括起来;(2)字字符符串串中中的的每每个个字字符符都都是是字字符符串串变变量量(矩矩阵阵或或向向量量)中的一个元素;中的一个元素;(3)字字符符串串中中的的字字符符以以ASCII码码形形式式储储存存并并区区分分大大小小。用函数用函数abs可以看到字符的可以看到字符的ASCII码。码。14可整理ppt1 1、字符串数组的建立
17、、字符串数组的建立(1 1)直接赋值法)直接赋值法建建立立字字符符串串可可通通过过直直接接赋赋值值,先先把把待待建建的的字字符符放放在在单单引引号号中,然后直接赋值给变量。如:中,然后直接赋值给变量。如:a=This is a book a=This is a book 15可整理ppt(2 2)建立中文字符串)建立中文字符串创创建建中中文文字字符符串串时时,字字符符外外边边的的单单引引号号对对必必须须在在英英文文状状态态下下输输入入。与与英英文文字字符符一一样样,每每个个中中文文字字符符也也占占一一个个元元素素位位置,但应注意此时的置,但应注意此时的ASCII大于大于256。A=中国长城中国
18、长城 A=中国长城中国长城16可整理ppt(3)建立带单引号的字符串)建立带单引号的字符串当当字字符符串串中中的的字字符符包包含含有有(英英文文)单单引引号号时时,每每个个单单引号符用连续的两个单引号符表示。引号符用连续的两个单引号符表示。B=China中国中国 B=China中国中国 17可整理ppt(4)多行字符串的创建)多行字符串的创建在在直直接接创创建建多多行行字字符符串串数数组组时时,要要保保证证同同一一字字符符串串数数组组的的各各行行字字符符数数相相等等,即即保保证证各各行行等等长长。如如果果不不等等长长,则则用空格符来调节其长度,使它们彼此相等。如:用空格符来调节其长度,使它们彼
19、此相等。如:AB=中国中国 ;chang cheng AB=中国中国 chang cheng 18可整理ppt(5)利用字符串操作函数创)利用字符串操作函数创建字符串数组建字符串数组在在MATLAB中中,有有专专用用函函数数char、str2mat和和strvcat创创建建多多行行字字符符串串数数组组。这这三三个个函函数数创创建建多多行行数数组组时时,不不必必担担心心每每行行字字符符是是否否相相等等,它它们们总总会会按按最最长长行行设设置置第第二二维维的的长长度度,其他行的尾部用空格填充。它们的调用格式为:其他行的尾部用空格填充。它们的调用格式为:S=char(TI,T2,T3,)S=str2
20、mat(T1,T2,T3,)S=strvcat(T1,T2,T3,)其其中中T1,T2,T3,是是字字符符串串,在在输输入入时时,T1,T2,T3,两边要加英文状态下的单引号。两边要加英文状态下的单引号。19可整理ppt(6)利用转换函数建立字符串数组)利用转换函数建立字符串数组在在MATLAB中中,把把数数值值数数组组转转化化为为字字符符串串数数组组的的常常用用函函数数为为int2str、num2str、mat2str、char和和double。函函数数命命令令char可可把把ASCII码码数数组组转转化化为为字字符符串串数数组组;命命令令double可把其他任何数组转化为数值数组。可把其他
21、任何数组转化为数值数组。【说明】:【说明】:中文字符能被命令中文字符能被命令char和和double正确转化。正确转化。20可整理ppt2 2、字符串数组的操作、字符串数组的操作(1)字符串的连接)字符串的连接字字符符串串可可以以连连接接到到一一起起组组成成更更大大的的字字符符串串。可可以以直直接接在在中中括号内用逗号连接,也可以通过函数括号内用逗号连接,也可以通过函数strcat连接。如:连接。如:A=中国长城中国长城B=China中国中国ab=A,B,第二个输入是表示输入空格字符串第二个输入是表示输入空格字符串 ab=中国中国 长城长城China中国中国 strcat(A,B)函数函数st
22、rcat连接,忽略原字符串结尾处的空格连接,忽略原字符串结尾处的空格 ans=中国长城中国长城China中国中国21可整理ppt3、字符串数组元素的标识、字符串数组元素的标识在在一一维维字字符符串串数数组组中中,MATLABMATLAB按按从从左左向向右右的的顺顺序序用用自自然然数数数数码码(1(1,2 2,3 3等等)标标识识字字符符位位置置,其其操作也用标识来进行。操作也用标识来进行。22可整理ppt三、单元数组三、单元数组 Cell ArrayCell Array单单元元数数组组(Cell Array)是是一一种种比比较较特特殊殊的的MATLAB数数组组,该该数数组组的的基基本本成成分分
23、是是单单元元,它它的的每每个个元元素素都都是是一一个个单单元元,单单元元中中包包含含其其他他MATLAB数数组组。每每个个单单元元本本身身在在数数组组中中是是平平等等的的,它它们们只只能能以以下下标标区区分分。单单元元内内可可以以存存放放任任何何类类型型、任任何何大大小小的的数数组组,而而且且同同一一单元数组内各单元的内容可以不同。单元数组内各单元的内容可以不同。同同数数值值数数组组一一样样,单单元元数数组组的的维维数数不不受受限限制制,可可以以是是一一维维、二二维维或或更高维。单元数组对单元的编址方法有单下标编址和全下标编址。更高维。单元数组对单元的编址方法有单下标编址和全下标编址。对对于于
24、单单元元数数组组来来说说,单单元元和和单单元元里里的的内内容容是是两两个个不不同同的的范范畴畴。因因此此,寻寻访访单单元元和和寻寻访访单单元元内内容容是是两两种种不不同同的的操操作作。以以二二维维单单元元数数组组为为例例,A(2,3)是是指指A单单元元数数组组中中的的第第二二行行第第三三列列单单元元元元素素;而而A2,3是是指指A单单元元数数组组中中的的第第二二行行第第三三列列单单元元中中所所允允许许存存或或取取的的内内容。两者的区别仅是用圆括号或是用花括号。容。两者的区别仅是用圆括号或是用花括号。23可整理ppt1 1、单元数组的建立、单元数组的建立(1)利用赋值语句建立单元数组)利用赋值语
25、句建立单元数组用用小小括括号号括括起起单单元元的的下下标标,在在赋赋值值语语句句的的右右侧侧用用花括号括起单元的内容。如:花括号括起单元的内容。如:A(1,1)=Mtalab;单元单元(1,1),字符串,字符串A(1,2)=6.0;单元单元(1,2),标量,记录版本号,标量,记录版本号A(2,1)=矩矩阵阵;单单元元(2,1),中中文文字字符符串串A(2,2)=2 3 4;23 l 4;5 4 8;单元单元(2,2),矩阵,矩阵A 列出矩阵列出矩阵A A=结果结果 matlab 6 矩阵矩阵 3x3 double24可整理ppt(1)利用赋值语句建立)利用赋值语句建立单元数组单元数组(续)(续
26、)用用花花括括号号括括起起单单元元的的下下标标,在在赋赋值值语语句句的的右右侧侧直直接指定单元的内容。如上面命令可写成:接指定单元的内容。如上面命令可写成:A1,1=matlab;单元单元(1,1)中的内容中的内容A1,2=6.0;单元单元(1,2)中的内容中的内容A2,2=矩阵矩阵;单元单元(2,1)中的内容中的内容A2,2=2 3 4;23 1 4;5 4 8;单元单元(2,2)中的内容中的内容 25可整理ppt(2)利用花括号(单元数组法)利用花括号(单元数组法)建立单元数组建立单元数组在在花花括括号号中中直直接接赋赋值值,单单元元与与单单元元之之间间用用逗逗号号、空空格格或或分分号号隔
27、开,使用如下语句也可得出与上面相同的单元数组。隔开,使用如下语句也可得出与上面相同的单元数组。A=matlab,6.0;矩阵矩阵,2 3 4;23 1 4;5 4 8或或A=matlab 6.0;矩阵矩阵 2 3 4;23 1 4;5 4 8【说说明明】:上上式式中中6.0后后面面的的分分号号表表示示数数组组另另起起一一行行,不不能能用别的符号代替。用别的符号代替。26可整理ppt(3)利用)利用cell函数建立单元数组函数建立单元数组cellcell函数用来预分配指定大小的单元数组,其调用格式为:函数用来预分配指定大小的单元数组,其调用格式为:c=cell(n)建立建立nn的单元数组,单元是
28、空矩阵;的单元数组,单元是空矩阵;C=cell(m,n)或或cell(m,n)建建立立mn的的单单元元数数组组,单单元是空矩阵;元是空矩阵;c=cell(m,n,p,)或或cell(m,n,p,.)建建立立mnp的的单元数组,单元是空矩阵;单元数组,单元是空矩阵;c=cell(size(A)建立和建立和A大小相同的单元数组。大小相同的单元数组。27可整理ppt2 2、单元数组的访问、单元数组的访问(1 1)用内容下标(花括号)访问单元内容)用内容下标(花括号)访问单元内容A1,1 访问第访问第(1,1)个单元中的内容个单元中的内容 ans=matlab(2)用单元下标(小括号)访问单元子集)用
29、单元下标(小括号)访问单元子集A(1,1)访问第访问第(1,1)个单元个单元 ans=matlabb=A(1:2,1)把把单单元元数数组组A中中第第一一列列的的两两个个单单元赋给元赋给b,b也成为单元数组也成为单元数组 b2=matlab 矩阵矩阵28可整理ppt3 3、单元数组的显示、单元数组的显示单单元元数数组组中中的的内内容容一一般般以以压压缩缩的的形形式式显显示示。要要形形象象地地查查看看单单元元数数组组中中的的内内容容,MATLAB提提供供了了函函数数cellplot命命令令,而而函数函数celldisp命令只是显示单元数组全部或部分内容。命令只是显示单元数组全部或部分内容。(1)c
30、ellplot函数函数【调用格式】:【调用格式】:H=cellplot(C,legend);式式中中第第二二个个输输入入参参数数用用于于现现实实色色彩彩图图例例,该该命命令令用用大大白白方方格格表表示示单单元元,用用小小方方格格表表示示所所存存的的数数组组元元素素,色色彩彩表表示数据属性。示数据属性。29可整理ppt4 4、单元数组的操作、单元数组的操作(1 1)把把单单元元(注注意意,不不是是单单元元内内容容)设设置置为为空空来来删删除除该该单单元数组中的单元;元数组中的单元;(2)用用函函数数reshape命命令令来来改改变变单单元元数数组组的的大大小小,但但要要注注意意改变形状时数组中的
31、元素个数;改变形状时数组中的元素个数;(3)单元数组也可像一般数组那样用方括号进行连接;)单元数组也可像一般数组那样用方括号进行连接;(4)单元数组可代替用逗号或空格分隔的变量列表;)单元数组可代替用逗号或空格分隔的变量列表;(5 5)如如果果数数组组中中的的多多个个单单元元是是用用花花括括号号和和冒冒号号一一起起引引用用的的,MATLABMATLAB则把每个单元的内容看作一个独立的变量。则把每个单元的内容看作一个独立的变量。30可整理ppt四、结构数组四、结构数组 Structure ArrayStructure ArrayMATLAB中中的的结结构构数数组组(Structure Array
32、)与与单单元元数数组组一一样样,能能在在一一个个数数组组存存放放各各类类数数组组。从从一一定定意意义义上上讲讲,结结构构数数组组组织数据的能力比单元数组更强、更富于变化。组织数据的能力比单元数组更强、更富于变化。结结构构数数组组的的基基本本成成分分是是结结构构(Structure),数数组组中中的的每每个个结结构构相相等等,它它们们以以下下标标区区分分。结结构构必必须须在在划划分分“域域”后后才才能能使使用用。数据不能直接存放在结构上,而只能存放在域中。数据不能直接存放在结构上,而只能存放在域中。结结构构的的域域可可以以存存放放任任何何类类型型、任任何何大大小小的的数数组组,而而且且不不同同结
33、构的同名域中存放的内容可以不同。结构的同名域中存放的内容可以不同。31可整理ppt1 1、结构数组的建立、结构数组的建立(1)直接建立结构数组)直接建立结构数组直直接接建建立立结结构构和和各各个个域域,同同时时给给各各域域赋赋值值(也也可可以以不不赋赋值值),结结构构和和域域之之间间用用点点连连接接。在在访访问问结结构构数数组组的的各各个个域域时时,也也是是“结结构构数数组组名名.域域名名”的的格格式式。当当结结构构带带有有子子域域时时,需需完完整整地地键键入入结结构构名名、域域名名、子子域域名名,才才能能显显示示域域中中的的内内容容。结结构构数数组组的的各各个个域域可可以以按照其本身的数据类
34、型进行相应的各种运算。按照其本身的数据类型进行相应的各种运算。32可整理ppt例例4-54-5example4-5.mexample4-5.m建立一桥梁混凝土试件强度的结构数组。建立一桥梁混凝土试件强度的结构数组。bridge.name=XX大大桥桥;域域名名为为name,中中文文字字符符串串,记录桥名记录桥名bridge.position=顶顶板板;域域名名为为position,中中文文字字符符串,记录试件位置串,记录试件位置bridge.position.group=2组组;子子域域名名为为group,字字符符串串,记录组数记录组数bridge.position.value=28.4 29
35、.4 30.1;26.8 29.0 28.8;子子域名域名value,记录试件强度记录试件强度33可整理ppt例例4-54-5example4-5.mexample4-5.m(续)续)bridge 得到结构数组的内容如下得到结构数组的内容如下 bridge=name:XX大桥大桥 position:1x1 struct bridge.position 显示域显示域position中的内容中的内容 ans=group:2组组 value:2x3 doublebridge.position.value 显示域显示域value中的内容中的内容 ans=28.4000 29.4000 30.1000
36、26.8000 29.0000 28.8000 34可整理ppt(2 2)利用)利用structurestructure函数创建结构数组函数创建结构数组MATLABMATLAB有有一一个个专专门门建建立立结结构构数数组组的的函函数数structstruct。该该函函数数命令的调用格式为:命令的调用格式为:struct(fieldl,valuesl,field2,values2,)struct(fieldl,valuesl,field2,values2,)用用指指定定的的域域名和各个域的数据建立结构数组。名和各个域的数据建立结构数组。如如果果数数组组中中包包含含多多个个结结构构,而而且且各各个个
37、结结构构域域中中的的数数据据不不尽尽相相同同,则则域域的的数数据据valuesl、values2、必必须须是是单单元元数数组组。建建立立的的结结构构数数组和单元数组的大小相同。组和单元数组的大小相同。35可整理ppt2 2、结构数组的操作、结构数组的操作(1)结构数组域中内容的调取和设置)结构数组域中内容的调取和设置在在MATLAB中中,对对结结构构数数组组域域中中内内容容的的调调取取和和设设置置可可通通过过函数函数getfield和和setfield进行。进行。(2)删除结构的域)删除结构的域 在在MATLAB中,利用函数中,利用函数rmfield可以删除结构的域。可以删除结构的域。(3)结
38、构数组和单元数组的转换)结构数组和单元数组的转换在在MATLAB中中,利利用用函函数数struct2cell和和cell2struct可可以以进进行结构数组和单元数组之间的转换。行结构数组和单元数组之间的转换。36可整理ppt3、数据的分配、数据的分配MATLABMATLAB中中的的函函数数dealdeal可可把把输输入入数数据据分分配配给给输输出出数数据据,其调用格式为:其调用格式为:(1)A,B,C,=deal(X,Y,Z,)等价于等价于 A=X,B=Y,C=Z,(2)A,B,C,=deal(X)等价于等价于A=X,B=X,C=X,37可整理ppt例例4-64-6example4_6.me
39、xample4_6.msys=rand(3)ones(3,1)eye(3)zeros(3,1);建立单元数组建立单元数组sysa,b,c,d=deal(sys:);把把sys中中的的每每个个“单单元元”分分配配给给相相对对应的变量应的变量 a=0.9501 0.4860 0.4565 0.2311 0.8913 0.0185 0.6068 0.7621 0.8214 b=1 1 1 c=1 0 0 0 1 0 0 0 1 d=0 0 0【说说明明】:例例4-5中中的的sys:和和sys不不同同,sys是是将将整整个个单单元元数数组组分分配配给每个变量。给每个变量。38可整理ppt4.3 MAT
40、LAB的运算符和操作符的运算符和操作符一、运算符一、运算符在在MATLAB中,最常见的运算符如表中,最常见的运算符如表4-4所示。所示。【注】:【注】:在矩阵运算中,左除和右除有一定的区别。在矩阵运算中,左除和右除有一定的区别。39可整理ppt二、操作符二、操作符MATLAB中中,操操作作符符在在资资料料构构造造和和运运算算中中非非常常有有用用。各各操操作作符符的的含含义如表义如表4-5所示。所示。【说明】:【说明】:(3)分分号号“;”在在方方括括号号中中,分分号号表表示示矩矩阵阵中中行行的的结结尾尾。如如用用在在每每行行的的结结尾尾,则则MATLAB不不会会显显示示该该行行运运算算的的结结
41、果果,此此功功能能可可以以用用在在M文文件件中中控控制命令的显示,减少输出篇幅。制命令的显示,减少输出篇幅。(1 1)冒冒号号“:”冒冒号号在在矩矩阵阵的的构构造造和和运运算算中中极极为为实实用用,它它可可以以用用来来产产生生向向量量;用用作作矩矩阵阵的的下下标;部分地选择矩阵元素;进行行循环操作等。标;部分地选择矩阵元素;进行行循环操作等。(2 2)续续号号“”如如果果一一个个命命令令很很长长,一一行行容容不不下下,则则可可以以在在一一行行的的末末尾加三个或更多的点,表示此行未完,而在下一行继续。尾加三个或更多的点,表示此行未完,而在下一行继续。40可整理ppt4.4 MATLAB的关系运的
42、关系运算和逻辑运算算和逻辑运算除除了了传传统统的的数数学学运运算算,MATLABMATLAB支支持持关关系系和和逻逻辑辑运运算算。在在程程序序流流程程控控制制中中,常常有有一一些些逻逻辑辑和和模模糊糊逻逻辑辑推推理理,需需要要对对其其做做出出“是是真真、是是假假”的的判判断断或或回回答答,以以便便控制程序的流程,或执行次序。控制程序的流程,或执行次序。作作为为所所有有关关系系和和逻逻辑辑表表达达式式的的输输入入,MATLABMATLAB把把任任何何非非零零数数值值当当作作真真,把把零零当当作作假假。所所有有关关系系和和逻逻辑辑表表达达式式的输出,对于真,输出为的输出,对于真,输出为1 1;对于
43、假,输出为零。;对于假,输出为零。41可整理ppt关系和逻辑运算的有关规定关系和逻辑运算的有关规定(1 1)在在所所有有的的关关系系表表达达式式和和逻逻辑辑表表达达式式中中,输输入入的的任任何何非非0 0数数都都被被看看作作是是“逻逻辑辑真真”,而而只只有有0 0才才被被认认为为是是“逻辑假逻辑假”;(2 2)所所有有关关系系表表达达式式和和逻逻辑辑表表达达式式的的计计算算结结果果是是一一个个由由0 0和和1 1组组成成的的“逻逻辑辑数数组组(Logical Logical Array)Array)”,数数组组中中的的1 1表示表示“真真”,0 0表示表示“假假”;(3 3)逻逻辑辑数数组组是
44、是一一种种特特殊殊的的数数值值数数组组,与与“数数值值类类”有有关关的的操操作作和和函函数数对对它它也也适适用用;但但它它又又不不同同于于普普通通的的“数数值值”,它它还还表表示示对对事事物物的的判判断断结结论论“真真”与与“假假”,有有其其自自身身的的特特殊用途。殊用途。42可整理ppt一、关系运算一、关系运算1、关系运算符、关系运算符MATLABMATLAB关关系系(运运算算)操操作作符符用用来来比比较较两两个个同同样样大大小小的的数数组组,或或用用来来比比较较一一个个数数组组和和一一个个标标量量。其其关关系系操操作作符符如如表表4-64-6所示。所示。注注:=和和=意意味味着着两两种种不
45、不同同的的事事:=比比较较两两个个变变量量,当当它它们们相相等等时时返返回回1 1,当当它它们们不不相相等等时时返返回回0 0;在在另另一一方方面面,=被被用来将运算的结果赋给一个变量。用来将运算的结果赋给一个变量。关系操作符关系操作符功能说明功能说明关系操作符关系操作符功能说明功能说明小于小于大于大于=大于或等于大于或等于=等于等于=不等于不等于43可整理ppt2 2、关系运算规则、关系运算规则(1 1)比较的两个变量是标量)比较的两个变量是标量若标量若标量a a、b b之间关系成立,则关系运算结果为之间关系成立,则关系运算结果为l l;若标量若标量a、b之间关系不成立,则关系结果为之间关系
46、不成立,则关系结果为0。(2)比较的两个变量是数组)比较的两个变量是数组当当两两个个维维数数相相同同的的数数组组A A和和B B比比较较时时,数数组组A A、B B比比较较的的是是相相同同位位置置的的元元素素,按按标标量量的的运运算算规规则则逐逐个个进进行行。关关系系运运算算的的结结果果是是一一个个维维数数和和A A相相同同的的数数组组,它它的的元元素素由由0 0和和1 1组成。组成。44可整理ppt(3)比较的两个变量一个是数)比较的两个变量一个是数组组A,另一个是标量另一个是标量b把把标标量量b b和和数数组组A A的的每每一一个个元元素素按按标标量量关关系系运运算算规规则则逐逐个个比比较
47、较。关关系系运运算算的的结结果果是是一一个个维维数数和和数数组组A A相相同同的数组,它是由的数组,它是由0 0和和l l组成。组成。(4)算术运算、关系运算和逻辑运算的优先级)算术运算、关系运算和逻辑运算的优先级由高到低为算术运算、关系运算和逻辑运算。由高到低为算术运算、关系运算和逻辑运算。45可整理ppt例例4-94-9example4_9.mexample4_9.m关系运算示例关系运算示例A=1:9,B=9-A A=1 2 3 4 5 6 7 8 9 B=8 7 6 5 4 3 2 1 0tf=A4%找找出出A中中大大于于4的的元元素素;0出出现现在在A4的地方的地方tf=0 0 0 0
48、 1 1 1 1 146可整理ppt例例4-94-9example4_9.mexample4_9.m(续)续)tf=(A=B)%找出找出A中的元素等于中的元素等于B中的元素中的元素tf=0 0 0 0 0 0 0 0 0tf=B-(A2)%找找出出A2,并并从从B中中减减去去所所求求得得的结果向量的结果向量tf=8 7 5 4 3 2 1 0 -147可整理ppt例例4-134-13example4_13.mexample4_13.m关系运算示例关系运算示例A=3 4 8;9 0 2;5 3 7 输入矩阵输入矩阵A A=3 4 8 9 0 2 5 3 7B=4 4 1;7 8 4;5 1 7
49、输入矩阵输入矩阵B B=4 4 1 7 8 4 5 1 748可整理ppt例例4-134-13example4_13.mexample4_13.m(续续1 1)E=(A=B)比较矩阵比较矩阵A和和B是否相等是否相等 E=0 1 0 0 0 0 1 0 1NE=(A=B)比较矩阵比较矩阵A和和B是否不等是否不等 NE=1 0 1 1 1 1 0 1 049可整理ppt例例4-134-13example4_13.mexample4_13.m(续续2 2)A0=(A5)标出矩阵标出矩阵A中大于中大于5的元素的元素 A0=0 0 1 1 0 0 0 0 1B0=(B=A=3 4 8;9 0 2;5 3
50、 7 输入矩阵输入矩阵A A=3 4 8 9 0 2 5 3 7B=4 4 1;7 8 4;5 1 7 输入矩阵输入矩阵B B=4 4 1 7 8 4 5 1 754可整理ppt例例4-164-16example4_16.mexample4_16.m(续续1 1)AB=A&B 对矩阵对矩阵A和和B求逻辑求逻辑“与与”AB=1 1 1 1 0 1 1 1 1A_B=A|B 对对矩矩阵阵A和和B求求逻逻辑辑“或或”A_B=1 1 1 1 1 1 1 1 155可整理ppt例例4-164-16example4_16.mexample4_16.m(续续2 2)C=A 对矩阵对矩阵A求逻辑求逻辑“非非”