MATLAB字符串、单元数组和结构.ppt
字符串、单元数组和结构,教学目标 教学重点 教学过程,教学目标,将介绍三种特殊的数据类型,即字符串、单元数组和结构。使用这三种数据类型,相关的数据可以通过一个单元数组或是结构进行组织和访问,数据的管理就变得要容易一些。,教学重点,字符串的设定和操作单元数组的操作结构型变量的操作,教学过程,字符串的设定字符串的各种操作单元数组的生成方法单元数组的操作结构型变量的生成方法结构型变量的操作,1.字符串的设定,在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 array,2.字符串的操作,字符串元素的读取 字符串的基本变换 字符串的运算,(1)字符串元素的读取,字符串元素的读取 利用数组操作工具进行读取 使用disp函数显示字符串,str=今天,是2005年10月25日,我们班一起去上海旅游。str=今天,是2005年10月25日,我们班一起去上海旅游。str(6)ans=0,(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 9 2,常见字符串的操作,(3)字符串的运算,字符串的运算主要是指判断字符串是否相等,通过字符的运算来比较字符,字符串中字符的分类、查找与替换、字符串与数值的转换和数组与字符串的转换等。,判断字符串是否相等,有两个函数可以用来判断两个输入的字符串是否相等。strcmp函数:比较两个字符串是否相等,当相等时,系统将返回值1,不相等时,返回值0;strncmp函数:比较两个输入字符串的前几个字符是否相等,当相等时,系统将返回值1,不相等时,返回值0。,words1=人民文学;words2=人民的同志;N=strcmp(words1,words2)N=0 Y=strncmp(words1,words2,3)Y=0 x=strncmp(words1,words2,1)x=1,通过字符的运算比较字符,运算符号的意义,字符串中字符的分类,字符串中的字符通常可以分为空白字符、字母字符和其他类型的字符。用户可以用isletter和isspace两个函数来对字符串中的字符进行分类。,realstring=realstring=A=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,.查找与替换,查找与替换是字符串操作中的一项重要内容,MATLAB 7语言提供了findstr、strfind和strrep等函数来实现查找与替换操作。,s1=我们班的班长是是赵洁!;s2=strrep(s1,赵洁,黄远)s2=我们班的班长是是黄远!s3=strrep(s2,黄远!,谁?)s3=我们班的班长是是谁?,字符串与数值的转换,常见的字符串转换函数,字符串与数值的转换举例,使用str2num函数将字符型矩阵转换为数字矩阵 S=1 2;3 4 S=%S为字符型矩阵1 23 4 X=str2num(S)X=%X为数字型矩阵 1 2 3 4,2.单 元 数 组,直接生成单元数组 使用cell函数生成单元数组 单元数组的内容的显示或获取 单元数组的变维处理,单元数组就是每个元素为一个单元的数组。每个单元都可以包含任意数据类型的MATLAB数组。,(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 double,(2)使用cell函数生成单元数组,应用举例:A=cell(2,2)A=A1,1=富强 民主;文明 廉洁A=2x4 char,(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,(4)单元数组的变维处理,前边所述的对矩阵的变维处理同样也适用于对单元数组的变维处理。此外还可以使用reshape函数进行操作。,A=1 2;3 4,love;呼唤和平,90,85,55;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,3.结构型变量,直接输入法生成结构型变量使用struct函数生成结构型变量 在结构体变量中添加成员变量 在结构体变量中删除成员变量 在结构体变量中调用成员变量 getefield和setfield函数的使用,结构体与单元数组的异同,结构体是根据属性名组织起来的不同类型数据的集合,其易与单元数组类型混淆。结构体的每一个元素叫做单元,而每一个单元包含MATLAB7.0数组。结构体和单元数组的共同之处在于它们都提供了一种分级存储机制来存储不同类型的数据,不同之处是组织数据的方式不一样。结构体数组里的数据是通过属性名来引用的,而在单元数组里,数据是通过单元数组下标引用来操作的。,(1)直接输入法生成结构型变量,student.test=99 56 96 87 67 69 87 76 92;student.name=Wu Qing;student.weight=68;student.height=1.72;student.num=2003214091;student.add=School of civil engneering.Tsinghua university;student.tel=1381042679*;,(2)使用struct函数生成结构型变量,truct_array=struct(d,北京,上海,strengths,40000 1000)d和strengths是属性truct_array=d:北京 上海 strengths:40000 1000,(3)在结构体变量中添加成员变量,student(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 age,(4)在结构体变量中删除成员变量,使用函数rmfifld从结构体变量中删除成员变量。student=rmfield(student,age);student=1x2 struct array with fields:test name weight height num add tel gender,(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 university,(6)getefield和setfield函数的使用,getfield函数取得当前存储在某个成员变量中的值。setfield函数给某个成员变量插入新的值。,GETF=getfield(student(1),add)GETF=School of civil engneering.Tsinghua university,