《字符串单元数组和结构体》由会员分享,可在线阅读,更多相关《字符串单元数组和结构体(29页珍藏版)》请在金锄头文库上搜索。
1、MATLAB R2007基础教程 清华大学出版社第6章字符串、单元数组和结构体 MATLAB R2007基础教程 清华大学出版社教学目标教学重点教学内容Date1MATLAB R2007基础教程 清华大学出版社教学目标l掌握字符串的生成及操作l掌握单元数组的生成及操作l掌握结构体的生成及操作Date2MATLAB R2007基础教程 清华大学出版社教学重点l字符串l单元数组l结构体Date3MATLAB R2007基础教程 清华大学出版社教学内容l字符串l单元数组l结构体Date4MATLAB R2007基础教程 清华大学出版社字符串的生成(1/2) l字符串的生成 lMATLAB 中的字符串
2、为 ASCII 值的数值数 组,作为字符串表达式进行表示。在 MATLAB 中,生成字符串的方法为 stringname=the content of the string。Date5MATLAB R2007基础教程 清华大学出版社字符串的生成(2/2) l字符串是一个 ASCII 码的字符数组,因此 ,与普通数组一样,字符串也可以形成矩 阵(表现为一个字符串有多行)。但是, 这些行必须有相同数目的列数。l另外,使用 char 函数可以创建长度不一致 的字符串矩阵。char 函数自动将所有字符 串的长度设置为输入字符串中长度的最大 值。Date6MATLAB R2007基础教程 清华大学出版社
3、字符串的操作 l字符串的显示 字符串的显示有两种方式:直接显示和利 用 disp 函数进行显示。l字符串的执行 在 MATLAB 中可以用函数 eval 来执行字 符串。Date7MATLAB R2007基础教程 清华大学出版社字符串的运算l字符串的运算主要包括: l判断字符串是否相等 l通过字符串运算来比较字符串中的字符 l进行字符分类、查找与替换 l字符串与数值数组之间的相互转换 函数名函数用途函数名函数用途strcat横向连接字符串strvcat纵向连接字符串strcmp字符串比较strncmp比较字符串的前n 个 字符findstr字符串查找strjust字符串对齐strmatch字符
4、串匹配strrep字符串查找与替换strtok选择 字符串中的部分blanks创建由空格组成的字 符串deblank删除字符串结尾的空 格ischar判断变量是否为字符 串iscellstr判断字符串单元数组isletter判断数组是否由字母 组成isspace判断是否空格stringsMATLAB 字符串句柄Date8MATLAB R2007基础教程 清华大学出版社字符串的比较(1/3)l字符串的比较主要为比较两个字符串是否相同, 字符串中的子串是否相同和字符串中的个别字符 是否相同。用于比较字符串的函数主要是 strcmp 和 strncmp。 strcmp:用于比较两个字符串是否相同。用
5、法为 strcmp(str1,str2),当两个字符串相同时返回1,否则 返回0。当所比较的两个字符串是单元字符数组时,返 回值为一个列向量,元素为相应行比较的结果。 strncmp:用于比较两个字符串的前面几个字符是否相 同。用法为 strncmp(str1,str2,n), 当字符串的前 n 个字符相同时返回1,否则返回 0。当所比较的两个字 符串时单元数组时,返回值为列向量,元素为相应行 比较的结果。Date9MATLAB R2007基础教程 清华大学出版社字符串的比较(2/3)l除了利用上面两个函数进行比较之外,还可以 通过简单运算比较两个字符串。当两个字符串 拥有相同的维数时,可以利
6、用 MATLAB 运算法 则,对字符数组进行比较。字符数组的比较与 数值数组的比较基本相同,不同之处在于字符 数组比较时进行比较的是字符的 ASCII 码值。 进行比较返回的结果为一个数值向量,元素为 对应字符比较的结果。需要注意的是在利用这 些运算比较字符串时,相互比较的两个字符串 必须有相同数目的元素。符号符号意义英文简写=等于eq=不等于ne大于gt=大于等于geDate10MATLAB R2007基础教程 清华大学出版社字符串的比较(3/3)l除上面介绍的两个字符串之间的比较之外, MATLAB 还可以判断字符串中的字符是否为空格 字符或者字母。实现这两个功能的函数分别为 isspac
7、e 和isletter。下面分别介绍这两个函数。 isspace:用法为 isspace(str),判断字符串 str 中的 字符是否为空格,是空格字符则返回1,否则返回0。 isletter:用法为 isletter(str),判断字符串 str 中的字 符是否为字母,是字母则返回1,否则返回0。Date11MATLAB R2007基础教程 清华大学出版社字符串的查找和替换l查找与替换是字符串操作中的一项重要内容。用 于查找的函数主要有 findstr,strmatch,strrep ,strtok 等。下面一一介绍这些函数。 findstr:用于在一个字符串中查找子字符串,返回子 字符串出
8、现的起始位置。用法为findstr(str1,str2),执 行时系统首先判断两个字符串的长短,然后在长的字 符串中检索短的子字符串。 strrep:查找字符串中的子字符串并将其替换为另一个 子字符串。用法为 str = strrep(str1, str2, str3),将 str1 中的所有子字符串 str2 替换为 str3。Date12MATLAB R2007基础教程 清华大学出版社 strmatch:在字符数组的每一行中查找是否存 在待查找的字符串,存在则返回1,否则返回0 。用法为strmatch(str, STRS),查找 str 中 以 STRS 开头的字符串。另外可以用 str
9、match(str, STRS,exact),查找精确包含 STRS 的字符串。 strtok:该函数用于选取字符串中的一个部分 。该函数的简单用法为 strtok(str)。Date13MATLAB R2007基础教程 清华大学出版社字符串与数值之间的转化 l一个字符串是由单引号括起来的简单文本 。在字符串中的每个字符都是数组中的一 个元素,这些数字是由 ASCII 字符表示的 。这些字符和整数之间可以相互转化。l首先,可以将字符串转化为数组。Date14MATLAB R2007基础教程 清华大学出版社char 函数的用法l char 函数的用法 Str=char(arr),该命令将包含正数
10、的数组 arr 转化为数值数组 当 C 是一个字符型单元数组是,Str=char(arr) 命令将 C 中的每一个单元转化为字符型数组的 对应行。使用 cellstr 可以进行逆变换。 Str=char(str1,str2,str3,.),该命令生成的字 符串矩阵包含字符串 str1、str2 和 tr3,三个 字符串的长度可以不相同。Date15MATLAB R2007基础教程 清华大学出版社字符串和数值数组之间的转化l上面已经介绍字符串和数值数组之间可以相互转 化,除上面介绍的方法,MTALAB 还提供更多 的函数,用于字符串和其他数据类型数值数组之 间的转化,可以实现更多功能。 函数功能
11、备注uintN(如,uint8)将字符串转化为相应的无符号整数uint8(ab) 97 98str2num将字符型转化为数字型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 底数字字符串转化为十进制base2
12、dec(212,3) 23Date16MATLAB R2007基础教程 清华大学出版社单元数组 l单元数组的生成l单元数组的操作 单元数组元素的访问 单元数组的显示 单元数组的图形显示 单元数组元素的删除 改变单元数组的维数Date17MATLAB R2007基础教程 清华大学出版社单元数组的生成l单元数组中的每一个元素称为单元(cell)。单 元中的数据可以为任何数据类型,包括数值数组 、字符、符号对象、其他单元数组和结构体。不 同的单元中的数据类型可以不同。MATLAB 中的 单元数组可以为任意维,通常最常用的是一维和 二维单元数组。l用户可以通过两种方式创建一个单元数组: 一个是通过赋值
13、语句直接创建; 二是利用 cell 函数先为单元数组分配一个内存空间, 然后再给各个单元赋值。Date18MATLAB R2007基础教程 清华大学出版社l直接赋值法通过给每个单元逐个赋值来创 建单元数组。单元数组用花括号表示,在 赋值时需要将单元内容用花括号(即)括 起来。l下面介绍用 cell 函数创建单元数组。使用 cell 函数创建单元数组的步骤为:首先用 cell 函数创建一个空的单元数组,然后再为 数组元素赋值。Date19MATLAB R2007基础教程 清华大学出版社单元数组元素的访问 l使用圆括号和花括号对单元数组索引是不 同的。当采用圆括号时表示的是该单元, 而采用花括号时则表示的是该单元的内容 。在 MATLAB 单元数组索引中,圆括号用 于标志单元、花括号用于按单元的寻址。Date20MATLAB R2007基础教程 清华大学出版社显示单元数组l在显示单元数组时 MATLAB 有时只显示单 元的大小和数据类型,而不显示每个单元 的具体内容。若要显示单元数组的内容, 可以用 celldisp 函数。l