Matlab第5章 字符串 单元数组和结构

合集下载
  1. 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
  2. 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
  3. 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
5eval?m?num2strnmagicn?end11表51常见字符串的操作函数名函数用途函数名strcat链接字符串strvcat垂直链接字符串strcmp比较字符串大小strncmp比较字符串的前n个字符findstr在其他的字符串中寻找该字符串strjust证明字符数组strmatch查找可能匹配的字符strrep用其他字符串代替改strtok查找字符串中的记号blanks生成空的字符串deblank删除字符串内的空格ischar字符串检验iscellstr字符串的单元检验isletter字母检验isspace空格检验stringsstrings函数的帮助123字符串的运算字符串的运算主要是指判断字符串是否相等通过字符的运算来比较字符字符串中字符的分类查找与替换字符串与数值的转换和数组与字符串的转换等
16
(4) 查找与替换 K=findstr(s1,s2) 查找 中s2出现的位置,或 查找s1中 出现的位置 出现的位置, 出现的位置。 者s2中s1出现的位置。 中 出现的位置 K=strfind (s1,s2) 查找 中第一个 出现的位 查找s1中第一个 中第一个s2出现的位 置。 Str=strrep(s1,s2,s3) 把字符串s1中的子串 置 把字符串 中的子串s2置 中的子串 换成s3,返回置换后的新字符串。注意, 换成 ,返回置换后的新字符串。注意,原 字符串s1不变 不变。 字符串 不变。
3、字符串的运算 、 字符串的运算主要是指判断字符串是否相等, 字符串的运算主要是指判断字符串是否相等, 通过字符的运算来比较字符, 通过字符的运算来比较字符,字符串中字符 的分类、查找与替换、 的分类、查找与替换、字符串与数值的转换 和数组与字符串的转换等。 和数组与字符串的转换等。
12
(1) 判断字符串是否相等 strcmp(str1,str2) 比较两个字符串是否相等, 比较两个字符串是否相等, 当相等时,系统将返回值1,不相等时, 当相等时,系统将返回值 ,不相等时,返回 值0; ; strncmp(str1,str2,n) 比较两个输入字符串的 个字符是否相等, 前n个字符是否相等,当相等时,系统将返回 个字符是否相等 当相等时, 值1,不相等时,返回值 。 ,不相等时,返回值0。
26
例 单元数组中小括号和大括号用法举例 a=cell(2) a(1,1) a{1,1} a(1,1)={[1 2;3 4]} a{1,2}=[0.8;0.7] a(1,1) a{1,1}
27
(2) celldisp celldisp(C) 显示单元型变量C的内容 显示单元型变量 的内容 celldisp(C,’name’) 在窗口中显示的单元型变 量的内容的名称为name,而不是通常显示的 量的内容的名称为 , ans 例 celldisp函数的使用 函数的使用 A={'This is the first Cell.', [1 2;3 4]; eye(3), {'Tom','Jane'}} celldisp(A,'CellA')
15
(3) 字符串中字符的分类 isspace(str) 逐个判断 中的字符是否为空 逐个判断str中的字符是否为空 格。 isletter(str) 逐个判断 中的字符是否为字 逐个判断str中的字符是否为字 母。 ischar(str) 判读 是否为字符型。 判读str是否为字符型 是否为字符型。
6
2、字符串的基本变换 、 (1)字符串的 字符串的ASCII码操作 字符串的 码操作 字符串的存储是把每个字符作为数组中的一 个元素存储,每个字符分配8字节 因此, 字节。 个元素存储,每个字符分配 字节。因此, 对字符串变量可以直接执行一些算术运算。 对字符串变量可以直接执行一些算术运算。 double(str)函数可以直接得到每个字符的对 函数可以直接得到每个字符的对 应数值。 应数值。 例: >>a='matlab' >>b=double(a) 7
28
CellA {1,1} = This is the first Cell. CellA {2,1} = 1 0 0 0 1 0 0 0 1 CellA {1,2} = 1 2 3 4 CellA {2,2}{1} = Tom CellA {2,2}{2} = Jane
29
5.3 结构型变量
单元数组和结构数组都能在一个数组中存放 不同类型的变量。 不同类型的变量。 结构数组的基本组成是结构(Structure) (Structure), 结构数组的基本组成是结构 (Structure) , 的结构体类似于C 语言的结构体, MATLAB 的结构体类似于 C 语言的结构体 , 每 一个结构都包含多个域(Fields 成员变量) (Fields, 一个结构都包含多个域 (Fields , 成员变量 ) , 每个域用操作符“.”表示。 每个域用操作符“ 表示。 表示 例如多个图形对象构成结构数组, 例如多个图形对象构成结构数组 , 一个图形 对象就是一个结构, 一个属性(Name Color、 (Name、 对象就是一个结构 , 一个属性 (Name 、 Color 、 30 Position)就是一个域。 Position)就是一个域。 就是一个域
第5章 字符串、 字符串、单元数组 和结构
张燕 zy29209@
1
字符串、 第5章 字符串、单元数组和结构
5.1 字符和字符串 5.2 单元数组 5.3 结构型变量
2
5.1 字符和字符串
5.1.1 设定字符串 中的字符串一般是ASCII值的 在MATLAB 7中的字符串一般是 中的字符串一般是 值的 数值数组,它作为字符串表达式进行显示。 数值数组,它作为字符串表达式进行显示。 一个字符串由多个字符组成,用单引号(‘) 一个字符串由多个字符组成,用单引号(‘) 来界定。字符串是按行向量进行存储的, 来界定。字符串是按行向量进行存储的,每 一个字符按照数组中的一个元素进行存储。 一个字符按照数组中的一个元素进行存储。 例如 str1='Hello' str2='你好 你好' 你好
(2) 使用 使用char函数进行逆变换 函数进行逆变换 char函数可将 函数可将ASCII码转换成字符串形式。 码转换成字符串形式。 函数可将 码转换成字符串形式 S=char(X) 将数组 转换为字符串数组。X的 将数组X转换为字符串数组 转换为字符串数组。 的 元素取值在1~127范围内。 范围内。 元素取值在 范围内 S=char(t1,t2,t3,…) 生成字符串矩阵,包含字 生成字符串矩阵, 符串T1, , 。其字符个数可以不相等。 符串 ,T2,T3。其字符个数可以不相等。 例 >>char([109 97 116 108 97 98]) >>char('hello','你好 你好') 你好
4
5.1.2 字符串的操作
1、字符串元素的读取 、 (1)利用数组操作工具进行读取 利用数组操作工具进行读取 >> str='今天,是2008年10月15日。' 今天, 今天 年 月 日 >> str(5) ans = 2
5
(2) 使用 使用disp函数显示字符串 函数显示字符串 >>disp(str) 今天, 今天,是2008年10月15日。 年 月 日 >> str str = 今天, 今天,是2008年10月15日。 年 月 日
13
>> s1='电子科大 电子科大'; 电子科大 >> s2='电子科技大学 电子科技大学'; 电子科技大学 >> strcmp(s1,s2) ans = 0 >> strncmp(s1,s2,2) ans = 1 >> strncmp(s1,s2,4) ans = 0
14
(2) 通过字符的运算比较字符 当字符数组具有相同的维数时, 当字符数组具有相同的维数时,可以利用 基本运算法则直接对字符数组进行比较。 基本运算法则直接对字符数组进行比较。 符 号 形 式 符 号 意 义 == ~= < > <= >= 等于 不等于 小于 大于 小于或等于 大于或等于
3
重复单引号来输入含有单引号的字符串, 重复单引号来输入含有单引号的字符串,例 str='I like ''MATLAB''!' 字符串可以有多行, 字符串可以有多行,但每行符号个数必须相 相差的部分可以用空格补齐。例如: 同,相差的部分可以用空格补齐。例如: s=['hello' ; '你好 '] 你好
18
(5) 字符串与数值的转换 常见的字符串转换函数 upper:把字符串中的小写字母转换为大写 : lower :把字符串中的大写字母转换为小写 length:用来计算字符串的长度 : num2str:数字转换成字符串 : int2str:整数转换成字符串 : str2num:将字符型转换为数字,原字符串 :将字符型转换为数字, 内容应该是数字
24
5.2.2 单元数组的操作
1、单元数组内容的显示或获取 、 (1) 获取单元数组的内容 对于单元数组中的每个单元, 对于单元数组中的每个单元,可以用小括号 和大括号来获取, 和大括号来获取,都可以用双下标或单下标 的方式调用,但二者的ቤተ መጻሕፍቲ ባይዱ义和用法完全不同。 的方式调用,但二者的含义和用法完全不同。
2、用cell函数生成单元数组 、 函数生成单元数组 cell(N) 生成一个 ×n阶的置空单元数组 生成一个n× 阶的置空单元数组 cell(M,N) 生成一个 ×n阶的置空单元数组 生成一个m× 阶的置空单元数组 cell(size(A)) 生成和 同等大小的置空单元数 生成和A同等大小 同等大小的置空单元数 组 >> b=cell(2,2) b= [] [] [] []
21
5.2 单元数组
单元数组(Cell Array)中的基本组成是单 单元数组 (Cell Array) 中的基本组成是单 (cell), 元 (cell) , 每一个单元可以用来存放各种 不同类型的数据, 如矩阵、 多维数组、 不同类型的数据 , 如矩阵 、 多维数组 、 字 符串、 符串 、 单元数组以及下一小节要介绍的结 构数组。 构数组。 例: Cell.',[1 A={'This is the first Cell.',[1 2;3 eye(3 4];eye(3),{'Tom','Jane'}}
19
使用str2num函数将字符型矩阵转换为数字 函数将字符型矩阵转换为数字 使用 矩阵 >> S = ['1 2' ;'3 4'] S= % S为字符型矩阵 为字符型矩阵 12 34 >> X=str2num(S) X= %X为数字型矩阵 为数字型矩阵 1 2 3 4
20
例:大小写字母的转换 方法一 a='matlab' b=char(a-32) 方法二 a='matlab' b=upper(a)
10
表5-1 常见字符串的操作
函数名 函 数 用 途 strvcat 垂直链接字符串 strncmp 比较字符串的前n 个 比较字符串的前 n 字符 findstr 在其他的字符串中寻 strjust 证明字符数组 找该字符串 strmatch 查找可能匹配的字符 strrep 用其他字符串代替改 串 串 strtok 查找字符串中的记号 blanks 生成空的字符串 deblank 删除字符串内的空格 ischar 字符串检验 iscellstr 字符串的单元检验 isspace 空格检验 isletter 字母检验 11 strings strings函数的帮助 strings函数的帮助 函数名 函数用途 strcat 链接字符串 比较字符串大小 strcmp
17
例 >> s1=‘我们班的班长是是赵洁 我们班的班长是是赵洁!‘; 我们班的班长是是赵洁 >> s2=strrep(s1,'赵洁 黄远 赵洁','黄远 赵洁 黄远') s2 = 我们班的班长是是黄远! 我们班的班长是是黄远 >> s3=strrep(s2,'黄远 ',‘谁?') 黄远! 黄远 谁 s3 = 我们班的班长是是谁? 我们班的班长是是谁?
25
( )用于标示一个单元,取出来的是一个单元 用于标示一个单元, 用于标示一个单元 结构,显示的是这个单元的整体结构类型。 结构,显示的是这个单元的整体结构类型。 用这种方式对一个单元赋值, 用这种方式对一个单元赋值,赋值内容也必 须是一个单元结构。 须是一个单元结构。 { }标示的是一个单元的内容,即具体的取值。 标示的是一个单元的内容, 标示的是一个单元的内容 即具体的取值。 可以直接把数值、 可以直接把数值、字符串等具体值对其进行 赋值。 赋值。
8
例:大小写字母的转换 a='matlab' b=char(a-32)
9
(3) 字符串的执行 eval函数可用来执行字符串。 函数可用来执行字符串。 函数可用来执行字符串 >> str9='a=2*5 str9= a=2*5' a=2*5 >> eval(str9) %执行字符串 a = 10 函数生成3到 阶的 阶的magic矩阵。 矩阵。 例5-6 用eval函数生成 到5阶的 函数生成 矩阵 >>for n = 3:5 eval(['M' num2str(n) ' = magic(n)']) end
22
5.2.1 单元数组的生成
1、直接生成单元数组 、 直接用{ 生成单元数组 生成单元数组, 直接用 }生成单元数组,每个单元的分隔与 矩阵类似。 矩阵类似。 >>A={'This is the first Cell.', [1 2;3 4]; eye(3), {'Tom','Jane'}} A= [1x23 char ] [2x2 double] 23 [3x3 double] {1x2 cell }
相关文档
最新文档