《字符串单元数组和结构体.ppt》由会员分享,可在线阅读,更多相关《字符串单元数组和结构体.ppt(27页珍藏版)》请在taowenge.com淘文阁网|工程机械CAD图纸|机械工程制图|CAD装配图下载|SolidWorks_CaTia_CAD_UG_PROE_设计图分享下载上搜索。
1、第第5章章 MATLAB 的数学运算的数学运算第第5章章 字符串、单元数组和结构体字符串、单元数组和结构体 字符串单元数组和结构体 Still waters run deep.流静水深流静水深,人静心深人静心深 Where there is life, there is hope。有生命必有希望。有生命必有希望第第5章章 MATLAB 的数学运算的数学运算第第5章章 字符串、单元数组和结构体字符串、单元数组和结构体 教学内容l掌握字符串的生成及操作掌握字符串的生成及操作l掌握单元数组的生成及操作掌握单元数组的生成及操作l掌握结构体的生成及操作掌握结构体的生成及操作第第5章章 MATLAB 的数
2、学运算的数学运算第第5章章 字符串、单元数组和结构体字符串、单元数组和结构体 字符串的生成字符串的生成l字符串的生成字符串的生成 lMATLAB 中的字符串为中的字符串为 ASCII 值的数值数组,值的数值数组,作为字符串表达式进行表示。在作为字符串表达式进行表示。在 MATLAB 中,中,生成字符串的方法为生成字符串的方法为 stringname=the content of the string。第第5章章 MATLAB 的数学运算的数学运算第第5章章 字符串、单元数组和结构体字符串、单元数组和结构体 字符串的生成字符串的生成l字符串是一个字符串是一个 ASCII 码的字符数组,因此,与码
3、的字符数组,因此,与普通数组一样,字符串也可以形成矩阵(表现为普通数组一样,字符串也可以形成矩阵(表现为一个字符串有多行)。但是,这些行必须有相同一个字符串有多行)。但是,这些行必须有相同数目的列数。数目的列数。l另外,使用另外,使用 char 函数可以创建长度不一致的字函数可以创建长度不一致的字符串矩阵。符串矩阵。char 函数自动将所有字符串的长度函数自动将所有字符串的长度设置为输入字符串中长度的最大值。设置为输入字符串中长度的最大值。第第5章章 MATLAB 的数学运算的数学运算第第5章章 字符串、单元数组和结构体字符串、单元数组和结构体 字符串的操作字符串的操作 l字符串的显示字符串的
4、显示字符串的显示有两种方式:直接显示和利用字符串的显示有两种方式:直接显示和利用 disp 函数进行显示。函数进行显示。l字符串的执行字符串的执行在在 MATLAB 中可以用函数中可以用函数 eval 来获得字符串来获得字符串的值。也叫求值函数的值。也叫求值函数第第5章章 MATLAB 的数学运算的数学运算第第5章章 字符串、单元数组和结构体字符串、单元数组和结构体 字符串的运算字符串的运算l字符串的运算主要包括: 判断字符串是否相等 通过字符串运算来比较字符串中的字符 进行字符分类、查找与替换 字符串与数值数组之间的相互转换 函数名函数用途函数名函数用途strcat横向连接字符串strvca
5、t纵向连接字符串strcmp字符串比较strncmp比较字符串的前n 个字符findstr字符串查找strjust字符串对齐strmatch字符串匹配strrep字符串查找与替换strtok选择字符串中的部分blanks创建由空格组成的字符串deblank删除字符串结尾的空格ischar判断变量是否为字符串iscellstr判断字符串单元数组isletter判断数组是否由字母组成isspace判断是否空格stringsMATLAB 字符串句柄第第5章章 MATLAB 的数学运算的数学运算第第5章章 字符串、单元数组和结构体字符串、单元数组和结构体 字符串的比较字符串的比较l字符串的比较主要为比
6、较两个字符串是否相同,字符串字符串的比较主要为比较两个字符串是否相同,字符串中的子串是否相同和字符串中的个别字符是否相同。用中的子串是否相同和字符串中的个别字符是否相同。用于比较字符串的函数主要是于比较字符串的函数主要是 strcmp 和和 strncmp。strcmp:用于比较两个字符串是否相同。用法为:用于比较两个字符串是否相同。用法为 strcmp(str1,str2),当两个字符串相同时返回,当两个字符串相同时返回1,否则返回,否则返回0。当所比较的两个字符串是单元字符数组时,返回值为一个列当所比较的两个字符串是单元字符数组时,返回值为一个列向量,元素为相应行比较的结果。向量,元素为相
7、应行比较的结果。strncmp:用于比较两个字符串的前面几个字符是否相同。:用于比较两个字符串的前面几个字符是否相同。用法为用法为 strncmp(str1,str2,n), 当字符串的前当字符串的前 n 个字符相同个字符相同时返回时返回1,否则返回,否则返回 0。当所比较的两个字符串时单元数组时,。当所比较的两个字符串时单元数组时,返回值为列向量,元素为相应行比较的结果。返回值为列向量,元素为相应行比较的结果。第第5章章 MATLAB 的数学运算的数学运算第第5章章 字符串、单元数组和结构体字符串、单元数组和结构体 字符串的比较字符串的比较l除了利用上面两个函数进行比较之外,还可以通过简除了
8、利用上面两个函数进行比较之外,还可以通过简单运算比较两个字符串。当两个字符串拥有相同的维单运算比较两个字符串。当两个字符串拥有相同的维数时,可以利用数时,可以利用 MATLAB 运算法则,对字符数组进行运算法则,对字符数组进行比较。字符数组的比较与数值数组的比较基本相同,比较。字符数组的比较与数值数组的比较基本相同,不同之处在于字符数组比较时进行比较的是字符的不同之处在于字符数组比较时进行比较的是字符的 ASCII 码值。进行比较返回的结果为一个数值向量,码值。进行比较返回的结果为一个数值向量,元素值为对应字符比较的结果。需要注意的是在利用元素值为对应字符比较的结果。需要注意的是在利用这些运算
9、比较字符串时,相互比较的两个字符串必须这些运算比较字符串时,相互比较的两个字符串必须有相同数目的元素。有相同数目的元素。符号符号意义英文简写=等于eq=不等于ne大于gt=大于等于ge第第5章章 MATLAB 的数学运算的数学运算第第5章章 字符串、单元数组和结构体字符串、单元数组和结构体 字符串的比较字符串的比较l除上面介绍的两个字符串之间的比较之外,除上面介绍的两个字符串之间的比较之外,MATLAB 还可以判断字符串中的字符是否为空还可以判断字符串中的字符是否为空格字符或者字母。实现这两个功能的函数分别为格字符或者字母。实现这两个功能的函数分别为 isspace 和和isletter。is
10、space:用法为:用法为 isspace(str),判断字符串,判断字符串 str 中中的字符是否为空格,是空格字符则返回的字符是否为空格,是空格字符则返回1,否则返回,否则返回0。isletter:用法为:用法为 isletter(str),判断字符串,判断字符串 str 中的中的字符是否为字母,是字母则返回字符是否为字母,是字母则返回1,否则返回,否则返回0。第第5章章 MATLAB 的数学运算的数学运算第第5章章 字符串、单元数组和结构体字符串、单元数组和结构体 字符串的查找和替换字符串的查找和替换l查找与替换是字符串操作中的一项重要内容。用查找与替换是字符串操作中的一项重要内容。用于
11、查找的函数主要有于查找的函数主要有 findstr,strmatch,strrep,strtok 等。下面一一介绍这些函数。等。下面一一介绍这些函数。findstr:用于在一个字符串中查找子字符串,返回:用于在一个字符串中查找子字符串,返回子字符串出现的起始位置。用法为子字符串出现的起始位置。用法为findstr(str1,str2),执行时系统首先判断两个字符串的长短,然后在长执行时系统首先判断两个字符串的长短,然后在长的字符串中检索短的子字符串。的字符串中检索短的子字符串。 strrep:查找字符串中的子字符串并将其替换为另一:查找字符串中的子字符串并将其替换为另一个子字符串。用法为个子字
12、符串。用法为 str = strrep(str1, str2, str3),将将 str1 中的所有子字符串中的所有子字符串 str2 替换为替换为 str3。第第5章章 MATLAB 的数学运算的数学运算第第5章章 字符串、单元数组和结构体字符串、单元数组和结构体 strmatch:在字符数组的每一行中查找是否存在待:在字符数组的每一行中查找是否存在待查找的字符串,存在则返回查找的字符串,存在则返回1,否则返回,否则返回0。用法为。用法为strmatch(str, STRS),查找,查找 str 中以中以 STRS 开头的开头的字符串。另外可以用字符串。另外可以用strmatch(str,
13、STRS,exact),查找精确包含,查找精确包含 STRS 的字符串。的字符串。strtok:该函数用于选取字符串中的一个部分。该函:该函数用于选取字符串中的一个部分。该函数的简单用法为数的简单用法为 strtok(str)。字符串的匹配和替换字符串的匹配和替换第第5章章 MATLAB 的数学运算的数学运算第第5章章 字符串、单元数组和结构体字符串、单元数组和结构体 字符串与数值之间的转化字符串与数值之间的转化 l一个字符串是由单引号括起来的简单文本。在字一个字符串是由单引号括起来的简单文本。在字符串中的每个字符都是数组中的一个元素,这些符串中的每个字符都是数组中的一个元素,这些数字是由数字
14、是由 ASCII 字符表示的。这些字符和整数字符表示的。这些字符和整数之间可以相互转化。之间可以相互转化。l首先,可以将字符串转化为数组。首先,可以将字符串转化为数组。第第5章章 MATLAB 的数学运算的数学运算第第5章章 字符串、单元数组和结构体字符串、单元数组和结构体 字符串和数值数组之间的转化字符串和数值数组之间的转化lMTALAB 提供更多的函数,用于字符串和其他数据类提供更多的函数,用于字符串和其他数据类型数值数组之间的转化,可以实现更多功能。型数值数组之间的转化,可以实现更多功能。 函数功能备注uintN(如,uint8)将字符串转化为相应的无符号整数uint8(ab) 97 9
15、8str2num将字符型转化为数字型str2num(123.56) 123.5600str2double与上一函数的功能相同,结果更精确一些,同时支持单元字符串数组double(123.56) 49 50 51 46 53 54。hex2num将十六进制数转化为双精度数hex2num(A) -1.4917e-154hex2dec将十六进制数基数转化为正数hex2dec(B) 11bin2dec将二进制转化为十进制bin2dec(1010) 10base2dec将 N 底数字字符串转化为十进制base2dec(212,3) 23第第5章章 MATLAB 的数学运算的数学运算第第5章章 字符串、单
16、元数组和结构体字符串、单元数组和结构体 单元数组和结构体单元数组和结构体lMATLAB5后出现的,这两种数据类型是将不同的相后出现的,这两种数据类型是将不同的相关数据集成到一个单一的变量中,使得大量的相关关数据集成到一个单一的变量中,使得大量的相关数据处理与引用变得简单而方便。单元数组和结构数据处理与引用变得简单而方便。单元数组和结构体仅仅是承载其它数据的容器,所以一般的运算只体仅仅是承载其它数据的容器,所以一般的运算只针对其中的具体数据进行。而不是对其本身。针对其中的具体数据进行。而不是对其本身。第第5章章 MATLAB 的数学运算的数学运算第第5章章 字符串、单元数组和结构体字符串、单元数
17、组和结构体 单元数组单元数组 l单元内容用单元内容用 括起来,里面可以是数值、字符串括起来,里面可以是数值、字符串等内容等内容l单元数组的生成单元数组的生成l单元数组的操作单元数组的操作 单元数组元素的访问单元数组元素的访问单元数组的显示单元数组的显示单元数组的图形显示单元数组的图形显示单元数组元素的删除单元数组元素的删除改变单元数组的维数改变单元数组的维数第第5章章 MATLAB 的数学运算的数学运算第第5章章 字符串、单元数组和结构体字符串、单元数组和结构体 单元数组的生成单元数组的生成l单元数组中的每一个元素称为单元(单元数组中的每一个元素称为单元(cell)。单)。单元中的数据可以为任
18、何数据类型,包括数值数组、元中的数据可以为任何数据类型,包括数值数组、字符、符号对象、其他单元数组和结构体。不同字符、符号对象、其他单元数组和结构体。不同的单元中的数据类型可以不同。的单元中的数据类型可以不同。MATLAB 中的中的单元数组可以为任意维,通常最常用的是一维和单元数组可以为任意维,通常最常用的是一维和二维单元数组。二维单元数组。l用户可以通过两种方式创建一个单元数组:用户可以通过两种方式创建一个单元数组:一个是通过赋值语句直接创建;一个是通过赋值语句直接创建;二是利用二是利用 cell 函数先为单元数组分配一个内存空间,函数先为单元数组分配一个内存空间,然后再给各个单元赋值。然后
19、再给各个单元赋值。第第5章章 MATLAB 的数学运算的数学运算第第5章章 字符串、单元数组和结构体字符串、单元数组和结构体 l直接赋值法通过给每个单元逐个赋值来创建单元直接赋值法通过给每个单元逐个赋值来创建单元数组。单元数组用花括号表示,在赋值时需要将数组。单元数组用花括号表示,在赋值时需要将单元内容用花括号(即单元内容用花括号(即)括起来。)括起来。lA(1,1)=1 2 3;3 4 5;4 5 6l用用 cell 函数创建单元数组。使用函数创建单元数组。使用 cell 函数创建函数创建单元数组的步骤为:首先用单元数组的步骤为:首先用 cell 函数创建一个函数创建一个空的单元数组,然后再
20、为数组元素赋值空的单元数组,然后再为数组元素赋值lCell(2,3),创建,创建23的空单元数组。的空单元数组。单元数组的生成单元数组的生成第第5章章 MATLAB 的数学运算的数学运算第第5章章 字符串、单元数组和结构体字符串、单元数组和结构体 单元数组元素的访问单元数组元素的访问 l使用圆括号和花括号对单元数组索引是不同的。使用圆括号和花括号对单元数组索引是不同的。当采用圆括号时表示的是该单元,而采用花括号当采用圆括号时表示的是该单元,而采用花括号时则表示的是该单元的内容。在时则表示的是该单元的内容。在 MATLAB 单元单元数组索引中,圆括号用于标志单元、花括号用于数组索引中,圆括号用于
21、标志单元、花括号用于按单元的寻址。按单元的寻址。第第5章章 MATLAB 的数学运算的数学运算第第5章章 字符串、单元数组和结构体字符串、单元数组和结构体 显示单元数组显示单元数组l在显示单元数组时在显示单元数组时 MATLAB 有时只显示单元的有时只显示单元的大小和数据类型,而不显示每个单元的具体内容。大小和数据类型,而不显示每个单元的具体内容。若要显示单元数组的内容,可以用若要显示单元数组的内容,可以用 celldisp 函函数。数。lcelldisp 函数用于显示单元数组的全部内容,有函数用于显示单元数组的全部内容,有时候只需要显示单元数组的一个单元,可以用花时候只需要显示单元数组的一个
22、单元,可以用花括号对单元进行索引。括号对单元进行索引。第第5章章 MATLAB 的数学运算的数学运算第第5章章 字符串、单元数组和结构体字符串、单元数组和结构体 单元数组的图形显示单元数组的图形显示 l除上面的单元数组查看方式外,除上面的单元数组查看方式外,MATLAB 支持支持以图形方式查看单元数组的内容。用这种方法可以图形方式查看单元数组的内容。用这种方法可以直观的看出单元数组的结构。但是需要注意的以直观的看出单元数组的结构。但是需要注意的是,是,cellplot 只能用于显示二维单元数组的内容。只能用于显示二维单元数组的内容。第第5章章 MATLAB 的数学运算的数学运算第第5章章 字符
23、串、单元数组和结构体字符串、单元数组和结构体 单元数组元素的删除单元数组元素的删除 l单元数组元素删除的方法很简单,只需将待删除的元素单元数组元素删除的方法很简单,只需将待删除的元素置为置为“空空”即可。需要注意的是在删除单元数组的元素即可。需要注意的是在删除单元数组的元素时,采用的索引方式为一维下标,格式为:时,采用的索引方式为一维下标,格式为:A(cell_subscripts) = 。l如果操作的单元数组为多维数组,则其索引方式逐维进如果操作的单元数组为多维数组,则其索引方式逐维进行,删除元素后,系统将该单元数组改变为一维单元数行,删除元素后,系统将该单元数组改变为一维单元数组,元素按照
24、维数逐次排序。组,元素按照维数逐次排序。l删除数组元素可以每次删除多个,下标用一维数组指定删除数组元素可以每次删除多个,下标用一维数组指定第第5章章 MATLAB 的数学运算的数学运算第第5章章 字符串、单元数组和结构体字符串、单元数组和结构体 改变单元数组的维数改变单元数组的维数 l改变数组的维数可以通过添加或删除数组元素完改变数组的维数可以通过添加或删除数组元素完成。删除数组元素时,得到的单元数组为原数组成。删除数组元素时,得到的单元数组为原数组中剩下元素排列而成,为一维数组,如上面一部中剩下元素排列而成,为一维数组,如上面一部分所介绍。添加数组元素时,自动添加该数组所分所介绍。添加数组元
25、素时,自动添加该数组所对应的行和列,其他元素为空。对应的行和列,其他元素为空。l另外可以通过函数另外可以通过函数 reshape 改变数组的形状。改变数组的形状。reshape 函数按照顺序将原单元数组的元素进行函数按照顺序将原单元数组的元素进行重新放置,得到新的单元数组元素个数与原数组重新放置,得到新的单元数组元素个数与原数组相同。相同。第第5章章 MATLAB 的数学运算的数学运算第第5章章 字符串、单元数组和结构体字符串、单元数组和结构体 结构体结构体 l结构体的生成结构体的生成 l结构体的操作结构体的操作 添加成员变量添加成员变量删除成员变量删除成员变量调用成员变量调用成员变量第第5章
26、章 MATLAB 的数学运算的数学运算第第5章章 字符串、单元数组和结构体字符串、单元数组和结构体 结构体的生成结构体的生成l与单元数组类似,结构体也有两种生成方式,一种是直与单元数组类似,结构体也有两种生成方式,一种是直接输入,另一种是使用结构体生成函数接输入,另一种是使用结构体生成函数 struct。l通过直接输入结构体各元素值的方法可以创建一个结构通过直接输入结构体各元素值的方法可以创建一个结构体。输入的同时定义该元素的名称,并使用体。输入的同时定义该元素的名称,并使用“.”将变将变量名与元素名连接。量名与元素名连接。lstruct 函数的最基本的使用方式是函数的最基本的使用方式是 st
27、ruct_name=struct(field1,V1,field2,V2,.),其中,其中 fieldn 是各成员变量名,是各成员变量名,Vn为对应的各成员变量的内为对应的各成员变量的内容。容。第第5章章 MATLAB 的数学运算的数学运算第第5章章 字符串、单元数组和结构体字符串、单元数组和结构体 添加成员变量添加成员变量 l如果需要向结构体中添加新的成员,可以直接输如果需要向结构体中添加新的成员,可以直接输入该变量的名称并赋值。入该变量的名称并赋值。第第5章章 MATLAB 的数学运算的数学运算第第5章章 字符串、单元数组和结构体字符串、单元数组和结构体 删除成员变量删除成员变量 l在在
28、MATLAB 中可以使用函数中可以使用函数 rmfield 从结构体从结构体中删除成员变量。命令中删除成员变量。命令 S=rmfield(S,field) 将删除结构体将删除结构体 S 中的成员中的成员 field,同时保留,同时保留 S 原原有的结构。有的结构。l可以使用命令可以使用命令 S=rmfield(S,fields) 一次删除多一次删除多个成员,其中个成员,其中 fields 为字符行变量或者单元型为字符行变量或者单元型变量。该命令删除变量。该命令删除 fields 中指定的成员。中指定的成员。第第5章章 MATLAB 的数学运算的数学运算第第5章章 字符串、单元数组和结构体字符串、单元数组和结构体 调用成员变量调用成员变量 l在在 MATLAB 中调用成员变量非常简单。结构体中调用成员变量非常简单。结构体中的任何信息,可以通过中的任何信息,可以通过“结构体变量名结构体变量名.成员成员名名”的方式调用。调出成员变量后,可以利用相的方式调用。调出成员变量后,可以利用相关函数进行调用。关函数进行调用。