MATLAB课件-第六章-字符串、单元数组和结构体_第1页
MATLAB课件-第六章-字符串、单元数组和结构体_第2页
MATLAB课件-第六章-字符串、单元数组和结构体_第3页
MATLAB课件-第六章-字符串、单元数组和结构体_第4页
MATLAB课件-第六章-字符串、单元数组和结构体_第5页
已阅读5页,还剩24页未读 继续免费阅读

下载本文档

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

第6章字符串、单元数组和结构体MATLABR2007基础教程清华大学出版社教学目标教学重点教学内容7/23/20231第6章字符串、单元数组和结构体MATLABR2007基础教学目标掌握字符串的生成及操作掌握单元数组的生成及操作掌握结构体的生成及操作7/23/20232教学目标掌握字符串的生成及操作7/23/20232教学重点字符串单元数组结构体7/23/20233教学重点字符串7/23/20233教学内容字符串单元数组结构体7/23/20234教学内容字符串7/23/20234字符串的生成(1/2)字符串的生成MATLAB中的字符串为ASCII值的数值数组,作为字符串表达式进行表示。在MATLAB中,生成字符串的方法为stringname=’thecontentofthestring’。7/23/20235字符串的生成(1/2)字符串的生成7/23/20235字符串的生成(2/2)字符串是一个ASCII码的字符数组,因此,与普通数组一样,字符串也可以形成矩阵(表现为一个字符串有多行)。但是,这些行必须有相同数目的列数。另外,使用char函数可以创建长度不一致的字符串矩阵。char函数自动将所有字符串的长度设置为输入字符串中长度的最大值。7/23/20236字符串的生成(2/2)字符串是一个ASCII码的字符数字符串的操作字符串的显示 字符串的显示有两种方式:直接显示和利用disp函数进行显示。字符串的执行 在MATLAB中可以用函数eval来执行字符串。7/23/20237字符串的操作字符串的显示7/23/20237字符串的运算字符串的运算主要包括:判断字符串是否相等通过字符串运算来比较字符串中的字符进行字符分类、查找与替换字符串与数值数组之间的相互转换函数名函数用途函数名函数用途strcat横向连接字符串strvcat纵向连接字符串strcmp字符串比较strncmp比较字符串的前n个字符findstr字符串查找strjust字符串对齐strmatch字符串匹配strrep字符串查找与替换strtok选择字符串中的部分blanks创建由空格组成的字符串deblank删除字符串结尾的空格ischar判断变量是否为字符串iscellstr判断字符串单元数组isletter判断数组是否由字母组成isspace判断是否空格stringsMATLAB字符串句柄7/23/20238字符串的运算字符串的运算主要包括:函数名函数用途函数名函数用字符串的比较(1/3)字符串的比较主要为比较两个字符串是否相同,字符串中的子串是否相同和字符串中的个别字符是否相同。用于比较字符串的函数主要是strcmp和strncmp。strcmp:用于比较两个字符串是否相同。用法为strcmp(str1,str2),当两个字符串相同时返回1,否则返回0。当所比较的两个字符串是单元字符数组时,返回值为一个列向量,元素为相应行比较的结果。strncmp:用于比较两个字符串的前面几个字符是否相同。用法为strncmp(str1,str2,n),当字符串的前n个字符相同时返回1,否则返回0。当所比较的两个字符串时单元数组时,返回值为列向量,元素为相应行比较的结果。7/23/20239字符串的比较(1/3)字符串的比较主要为比较两个字符串是否相字符串的比较(2/3)除了利用上面两个函数进行比较之外,还可以通过简单运算比较两个字符串。当两个字符串拥有相同的维数时,可以利用MATLAB运算法则,对字符数组进行比较。字符数组的比较与数值数组的比较基本相同,不同之处在于字符数组比较时进行比较的是字符的ASCII码值。进行比较返回的结果为一个数值向量,元素为对应字符比较的结果。需要注意的是在利用这些运算比较字符串时,相互比较的两个字符串必须有相同数目的元素。符号符号意义英文简写==等于eq~=不等于ne<小于lt>大于gt<=小于等于le>=大于等于ge7/23/202310字符串的比较(2/3)除了利用上面两个函数进行比较之外,还可字符串的比较(3/3)除上面介绍的两个字符串之间的比较之外,MATLAB还可以判断字符串中的字符是否为空格字符或者字母。实现这两个功能的函数分别为isspace和isletter。下面分别介绍这两个函数。isspace:用法为isspace(str),判断字符串str中的字符是否为空格,是空格字符则返回1,否则返回0。isletter:用法为isletter(str),判断字符串str中的字符是否为字母,是字母则返回1,否则返回0。7/23/202311字符串的比较(3/3)除上面介绍的两个字符串之间的比较之外,字符串的查找和替换查找与替换是字符串操作中的一项重要内容。用于查找的函数主要有findstr,strmatch,strrep,strtok等。下面一一介绍这些函数。findstr:用于在一个字符串中查找子字符串,返回子字符串出现的起始位置。用法为findstr(str1,str2),执行时系统首先判断两个字符串的长短,然后在长的字符串中检索短的子字符串。strrep:查找字符串中的子字符串并将其替换为另一个子字符串。用法为str=strrep(str1,str2,str3),将str1中的所有子字符串str2替换为str3。7/23/202312字符串的查找和替换查找与替换是字符串操作中的一项重要内容。用strmatch:在字符数组的每一行中查找是否存在待查找的字符串,存在则返回1,否则返回0。用法为strmatch('str',STRS),查找str中以STRS开头的字符串。另外可以用strmatch('str',STRS,’exact’),查找精确包含STRS的字符串。strtok:该函数用于选取字符串中的一个部分。该函数的简单用法为strtok(str)。7/23/202313strmatch:在字符数组的每一行中查找是否存在待查找的字字符串与数值之间的转化一个字符串是由单引号括起来的简单文本。在字符串中的每个字符都是数组中的一个元素,这些数字是由ASCII字符表示的。这些字符和整数之间可以相互转化。首先,可以将字符串转化为数组。7/23/202314字符串与数值之间的转化一个字符串是由单引号括起来的简单文本char函数的用法char函数的用法Str=char(arr),该命令将包含正数的数组arr转化为数值数组 当C是一个字符型单元数组是,Str=char(arr)命令将C中的每一个单元转化为字符型数组的对应行。使用cellstr可以进行逆变换。Str=char(str1,str2,str3,...),该命令生成的字符串矩阵包含字符串str1、str2和tr3,三个字符串的长度可以不相同。7/23/202315char函数的用法char函数的用法7/23/2023字符串和数值数组之间的转化上面已经介绍字符串和数值数组之间可以相互转化,除上面介绍的方法,MTALAB还提供更多的函数,用于字符串和其他数据类型数值数组之间的转化,可以实现更多功能。函数功能备注uintN(如,uint8)将字符串转化为相应的无符号整数uint8('ab')→9798str2num将字符型转化为数字型str2num('123.56')→123.5600str2double与上一函数的功能相同,结果更精确一些,同时支持单元字符串数组double('123.56')→495051465354。hex2num将十六进制数转化为双精度数hex2num('A')→-1.4917e-154hex2dec将十六进制数基数转化为正数hex2dec('B')→11bin2dec将二进制转化为十进制bin2dec('1010')→10base2dec将N底数字字符串转化为十进制base2dec('212',3)→237/23/202316字符串和数值数组之间的转化上面已经介绍字符串和数值数组之间可单元数组单元数组的生成单元数组的操作单元数组元素的访问单元数组的显示单元数组的图形显示单元数组元素的删除改变单元数组的维数7/23/202317单元数组单元数组的生成7/23/202317单元数组的生成单元数组中的每一个元素称为单元(cell)。单元中的数据可以为任何数据类型,包括数值数组、字符、符号对象、其他单元数组和结构体。不同的单元中的数据类型可以不同。MATLAB中的单元数组可以为任意维,通常最常用的是一维和二维单元数组。用户可以通过两种方式创建一个单元数组:一个是通过赋值语句直接创建;二是利用cell函数先为单元数组分配一个内存空间,然后再给各个单元赋值。7/23/202318单元数组的生成单元数组中的每一个元素称为单元(cell)。单直接赋值法通过给每个单元逐个赋值来创建单元数组。单元数组用花括号表示,在赋值时需要将单元内容用花括号(即{})括起来。下面介绍用cell函数创建单元数组。使用cell函数创建单元数组的步骤为:首先用cell函数创建一个空的单元数组,然后再为数组元素赋值。7/23/202319直接赋值法通过给每个单元逐个赋值来创建单元数组。单元数组用花单元数组元素的访问使用圆括号和花括号对单元数组索引是不同的。当采用圆括号时表示的是该单元,而采用花括号时则表示的是该单元的内容。在MATLAB单元数组索引中,圆括号用于标志单元、花括号用于按单元的寻址。7/23/202320单元数组元素的访问使用圆括号和花括号对单元数组索引是不同的显示单元数组在显示单元数组时MATLAB有时只显示单元的大小和数据类型,而不显示每个单元的具体内容。若要显示单元数组的内容,可以用celldisp函数。celldisp函数用于显示单元数组的全部内容,有时候只需要显示单元数组的一个单元,可以用花括号对单元进行索引。7/23/202321显示单元数组在显示单元数组时MATLAB有时只显示单元的单元数组的图形显示除上面的单元数组查看方式外,MATLAB支持以图形方式查看单元数组的内容。用这种方法可以直观的看出单元数组的结构。但是需要注意的是,cellplot只能用于显示二维单元数组的内容。7/23/202322单元数组的图形显示除上面的单元数组查看方式外,MATLAB单元数组元素的删除单元数组元素删除的方法很简单,只需将待删除的元素置为“空”即可。需要注意的是在删除单元数组的元素时,采用的索引方式为一维下标,格式为:A(cell_subscripts)=[]。如果操作的单元数组为多维数组,则其索引方式逐维进行,删除元素后,系统将该单元数组改变为一维单元数组,元素按照维数逐次排序。删除数组元素可以每次删除多个,下标用一维数组指定7/23/202323单元数组元素的删除单元数组元素删除的方法很简单,只需将待删改变单元数组的维数改变数组的维数可以通过添加或删除数组元素完成。删除数组元素时,得到的单元数组为原数组中剩下元素排列而成,为一维数组,如上面一部分所介绍。添加数组元素时,自动添加该数组所对应的行和列,其他元素为空。另外可以通过函数reshape改变数组的形状。reshape函数按照顺序将原单元数组的元素进行重新放置,得到新的单元数组元素个数与原数组相同。7/23/202324改变单元数组的维数改变数组的维数可以通过添加或删除数组元素结构体结构体的生成结构体的操作添加成员变量删除成员变量调用成员变量7/23/202325结构体结构体的生成7/23/202325结构体的生成与单元数组类似,结构体也有两种生成方式,一种是直接输入,另一种是使用结构体生成函数struct。通过直接输入结构体各元素值的方法可以创建一个结构体。输入的同时定义该元素的名称,并使用“.”将变量名与元素名连接。struct函数的最基本的使用方式是struct_name=struct('field1',V1,'field2',V2,...),其中fieldn是各成员变量名,Vn为对应的各成员变量的内容。7/23/202326结构体的生成与单元数组类似,结构体也有两种生成方式,一种是直添加成员变量如果需要向结构体中添加新的成员,可以直接输入该变量的名称并赋值。7/23/202327添加成员变量如果需要向结构体中添加新的成员,可以直接输入该删除成员变量在MATLAB中可以使用函数rmfield从结构体中删除成员变量。命令S=rmfield(S,

温馨提示

  • 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
  • 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
  • 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
  • 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
  • 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
  • 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
  • 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

评论

0/150

提交评论