《MATLAB字符串、单元数组和结构.ppt》由会员分享,可在线阅读,更多相关《MATLAB字符串、单元数组和结构.ppt(30页珍藏版)》请在taowenge.com淘文阁网|工程机械CAD图纸|机械工程制图|CAD装配图下载|SolidWorks_CaTia_CAD_UG_PROE_设计图分享下载上搜索。
1、字符串、单元数组和结构 教学目标 教学重点 教学过程12/19/20221第5章 字符串、单元数组和结构教学目标将介绍三种特殊的数据类型,即字符串、单元数组和结构。使用这三种数据类型,相关的数据可以通过一个单元数组或是结构进行组织和访问,数据的管理就变得要容易一些。12/19/20222第5章 字符串、单元数组和结构教学重点字符串的设定和操作单元数组的操作结构型变量的操作12/19/20223第5章 字符串、单元数组和结构教学过程字符串的设定字符串的各种操作单元数组的生成方法单元数组的操作结构型变量的生成方法结构型变量的操作12/19/20224第5章 字符串、单元数组和结构1.字符串的设定在
2、MATLAB 7中的字符串一般是ASCII值的数值数组,它作为字符串表达式进行显示。MATLAB 7对字符串的设定非常简单,只需用单引号()将需设定的字符串引注即可。str=I have many good friends!str=I have many good friends!whos Name Size Bytes Class EXPLODE 1x5 40 double array F1 1x12 24 char array F2 1x12 24 char array12/19/20225第5章 字符串、单元数组和结构2.字符串的操作 字符串元素的读取 字符串的基本变换 字符串的运算 1
3、2/19/20226第5章 字符串、单元数组和结构(1)字符串元素的读取字符串元素的读取 利用数组操作工具进行读取 使用disp函数显示字符串 str=今天,是2005年10月25日,我们班一起去上海旅游。str=今天,是2005年10月25日,我们班一起去上海旅游。str(6)ans=012/19/20227第5章 字符串、单元数组和结构(2)字符串的基本变换基本变换的种类字符串的ASCII码操作使用char函数进行逆变换 字符串的执行 for n=2:3eval(M num2str(n)=magic(n)%用eval函数来执行字符串。endM2=1 3 4 2M3=8 1 6 3 5 7
4、4 9 212/19/20228第5章 字符串、单元数组和结构常见字符串的操作 函 数 名函 数 用 途函 数 名函 数 用 途strcat链接字符串strvcat垂直链接字符串strcmp比较字符串大小strncmp比较字符串的前n个字符findstr在其他的字符串中寻找该字符串strjust证明字符数组strmatch查找可能匹配的字符串strrep用其他字符串代替改串strtok查找字符串中的记号blanks生成空的字符串deblank删除字符串内的空格ischar字符串检验iscellstr字符串的单元检验isletter字母检验isspace空格检验stringsstrings函数的
5、帮助12/19/20229第5章 字符串、单元数组和结构(3)字符串的运算字符串的运算主要是指判断字符串是否相等,通过字符的运算来比较字符,字符串中字符的分类、查找与替换、字符串与数值的转换和数组与字符串的转换等。12/19/202210第5章 字符串、单元数组和结构判断字符串是否相等 有两个函数可以用来判断两个输入的字符串是否相等。strcmp函数:比较两个字符串是否相等,当相等时,系统将返回值1,不相等时,返回值0;strncmp函数:比较两个输入字符串的前几个字符是否相等,当相等时,系统将返回值1,不相等时,返回值0。words1=人民文学;words2=人民的同志;N=strcmp(w
6、ords1,words2)N=0 Y=strncmp(words1,words2,3)Y=0 x=strncmp(words1,words2,1)x=1 12/19/202211第5章 字符串、单元数组和结构通过字符的运算比较字符 运算符号的意义符 号 形 式符 号 意 义英 文 简 写=等于eq=不等于ne大于gt=大于或等于ge12/19/202212第5章 字符串、单元数组和结构字符串中字符的分类 字符串中的字符通常可以分为空白字符、字母字符和其他类型的字符。用户可以用isletter和isspace两个函数来对字符串中的字符进行分类。realstring= realstring= A=
7、isspace(realstring)A=Columns 1 through 11 0 0 0 0 0 0 0 0 0 0 0 Columns 12 through 16 0 0 0 1 1 12/19/202213第5章 字符串、单元数组和结构.查找与替换 查找与替换是字符串操作中的一项重要内容,MATLAB 7语言提供了findstr、strfind和strrep等函数来实现查找与替换操作。s1=我们班的班长是是赵洁!;s2=strrep(s1,赵洁,黄远)s2=我们班的班长是是黄远!s3=strrep(s2,黄远!,谁?)s3=我们班的班长是是谁?12/19/202214第5章 字符串、
8、单元数组和结构字符串与数值的转换 常见的字符串转换函数函 数功 能函 数功 能hex2dec将16进制字符串转化为10进制整数dec2hex将10进制整数转化为16进制字符串bin2dec将2进制字符串转化为10进制整数dec2bin将10进制整数转化为2进制字符串base2dec转化B底字符串为10进制整数hex2num将16进制字符转化为双精度数upper改该字符串为大写lower改该字符串为小写fprintf把格式化的文本写到文件中或显示屏上sprintf用格式控制,数字转换成字符串sscanf用格式控制,字符串转换成数字charASCII码转换成字符串num2str数字转换成字符串in
9、t2str整数转换成字符串12/19/202215第5章 字符串、单元数组和结构字符串与数值的转换举例使用str2num函数将字符型矩阵转换为数字矩阵 S=1 2 ;3 4 S=%S为字符型矩阵1 23 4 X=str2num(S)X=%X为数字型矩阵 1 2 3 412/19/202216第5章 字符串、单元数组和结构2.单 元 数 组 直接生成单元数组 使用cell函数生成单元数组 单元数组的内容的显示或获取 单元数组的变维处理 12/19/202217第5章 字符串、单元数组和结构单元数组就是每个元素为一个单元的数组。每个单元都可以包含任意数据类型的MATLAB数组。12/19/2022
10、18第5章 字符串、单元数组和结构(1)直接生成单元数组用类似矩阵的记号将给复杂的数据结构纳入一个变量之下。和矩阵中的圆括号表示下标类似,单元数组由大括号表示下标。A=反对霸权,Wind Gone,100+200*i,90,85,55;67,70,102;57,18,100;-200,89,78A=Columns 1 through 3 反对霸权 Wind Gone 1.0000e+002+2.0000e+002i Column 4 4x3 double12/19/202219第5章 字符串、单元数组和结构(2)使用cell函数生成单元数组应用举例:A=cell(2,2)A=A1,1=富强 民
11、主;文明 廉洁A=2x4 char 12/19/202220第5章 字符串、单元数组和结构(3)单元数组的内容的显示或获取celldisp(A,Huang)Huang1,1=1 2 2 2Huang2,1=Tsinghua and PekingHuang1,2=MATLAB 7 Huang2,2=1.0000+5.0000i 12.0000-4.0000i 12/19/202221第5章 字符串、单元数组和结构(4)单元数组的变维处理 前边所述的对矩阵的变维处理同样也适用于对单元数组的变维处理。此外还可以使用reshape函数进行操作。A=1 2;3 4,love;呼唤和平,90,85,55;
12、67,70,102;57,18,100;-200,89,78A=2x2 double love 呼唤和平 4x3 double a=reshape(A,1,4)a=2x2 double 呼唤和平 love 4x3 double 12/19/202222第5章 字符串、单元数组和结构3.结构型变量直接输入法生成结构型变量使用struct函数生成结构型变量 在结构体变量中添加成员变量 在结构体变量中删除成员变量 在结构体变量中调用成员变量 getefield和setfield函数的使用 12/19/202223第5章 字符串、单元数组和结构结构体与单元数组的异同结构体是根据属性名组织起来的不同类型
13、数据的集合,其易与单元数组类型混淆。结构体的每一个元素叫做单元,而每一个单元包含MATLAB7.0数组。结构体和单元数组的共同之处在于它们都提供了一种分级存储机制来存储不同类型的数据,不同之处是组织数据的方式不一样。结构体数组里的数据是通过属性名来引用的,而在单元数组里,数据是通过单元数组下标引用来操作的。12/19/202224第5章 字符串、单元数组和结构(1)直接输入法生成结构型变量 student.test=99 56 96 87 67 69 87 76 92;student.name=Wu Qing;student.weight=68;student.height=1.72;stud
14、ent.num=2003214091;student.add=School of civil engneering.Tsinghua university;student.tel=1381042679*;12/19/202225第5章 字符串、单元数组和结构(2)使用struct函数生成结构型变量 truct_array=struct(d,北京,上海,strengths,40000 1000)d和strengths是属性truct_array=d:北京 上海 strengths:40000 100012/19/202226第5章 字符串、单元数组和结构(3)在结构体变量中添加成员变量 stud
15、ent(1).gender=Male;%在student中添加gender和age这2项记录 student(1).age=25;student(2).gender=Female;student(2).age=21;student%查询student的结构student=1x2 struct array with fields:test name weight height num add tel gender age12/19/202227第5章 字符串、单元数组和结构(4)在结构体变量中删除成员变量 使用函数rmfifld从结构体变量中删除成员变量。student=rmfield(stud
16、ent,age);student=1x2 struct array with fields:test name weight height num add tel gender12/19/202228第5章 字符串、单元数组和结构(5)在结构体变量中调用成员变量 student(1).test%从结构体变量中取出相关信息ans=99 56 96 87 67 69 87 76 92 student(1).test(5)ans=67 student(1).addans=School of civil engneering.Tsinghua university12/19/202229第5章 字符串、单元数组和结构(6)getefield和setfield函数的使用getfield函数取得当前存储在某个成员变量中的值。setfield函数给某个成员变量插入新的值。GETF=getfield(student(1),add)GETF=School of civil engneering.Tsinghua university12/19/202230第5章 字符串、单元数组和结构