《第4章字符串数组、元胞数组.ppt》由会员分享,可在线阅读,更多相关《第4章字符串数组、元胞数组.ppt(37页珍藏版)》请在淘文阁 - 分享文档赚钱的网站上搜索。
1、1 第第4 4章字符串数组、元胞数组和结构数组章字符串数组、元胞数组和结构数组4.1 字符串数组4.2 元胞数组(单元数组)4.3 结构数组(构架数组)2 4.14.1 字符串数组字符串数组4.1.1 字符串构造 t=How about this character string?t=How about this character string?size(t)ans=1 32 whos Name Size Bytes Class t 1x32 64 char arrayGrand total is 34 elements using 80 bytes 3 u=abs(t)u=Columns
2、1 through 12 72 111 119 32 97 98 111 117 116 32 116 104 Columns 13 through 24 105 115 32 99 104 97 114 97 99 116 101 114 Columns 25 through 32 32 115 116 114 105 110 103 63 char(u)ans=How about this character string?4 u=t(16:24)u=characteru=Hello,;v=World!;v=Character strings having more than one ro
3、w must have the same number of column just like matrices!v=Character strings having more thanone row must have the same number of column just like matrices!w=u vw=Hello,World!disp(w)Hello,World!5 lengends=char(Wilt,Russel,Kareem)lengends=Wilt RusselKareem char(one,tow,three)ans=one tow three strvcat
4、(one,two,three)ans=one two three 6 4.1.2数字与字符串的相互转换Dec2hex十进制数到十六进制字符串转换fprintf把格式化的文本写到文件中或显示屏上hex2dec十六进制字符串转换成十进制数hex2num十六进制字符串转换成IEEE浮点数int2str整数转换成字符串lower字符串转换成小写num2str数字转换成字符串setstrASCII转换成字符串sprintf用格式控制,数字转换成字符串sscanf用格式控制,字符串转换成数字str2mat字符串转换成一个文本矩阵str2num字符串转换成数字upper字符串转换成大写7 rad=2.5;a
5、rea=pi*rad2;t=A circle of radius num2str(rad)has an area of num2str(area).;disp(t)A circle of radius 2.5 has an area of 19.63 t=sprintf(A circle of radius%.4g has an area of%.4g.,rad,area);disp(t)A circle of radius 2.5 has an area of 19.63.fprintf(A circle of radius%.4g has an area of%.4g.n,rad,area
6、)A circle of radius 2.5 has an area of 19.63.8 fprintf(%.0en,pi)3e+00fprintf(%.3en,pi)3.142e+00fprintf(%.10en,pi)3.1415926536e+00fprintf(%.0fn,pi)3fprintf(%.3fn,pi)3.142fprintf(%.10fn,pi)3.1415926536fprintf(%.0gn,pi)3fprintf(%.3gn,pi)3.14fprintf(%.10gn,pi)3.141592654fprintf(%.8.0gn,pi)3fprintf(%.8.3
7、gn,pi)3.14fprintf(%.8.10gn,pi)3.1415926549 4.1.34.1.3字符串函数字符串函数eval(string)作为一个MATLAB命令求字符串的值blanks(n)返回一个n个零或空格的字符串deblank去掉字符串中后拖的空格feval求由字符串给定的函数值findstr从一个字符串内找出字符串isletter字母存在时返回真值isspace空格字符存在时返回真值isstr输入是一个字符串,返回真值lasterr返回上一个所产生MATLAB错误的字符串strcmp字符串相同,返回真值strrep用一个字符串替换另一个字符串strtok在一个字符串里找出
8、第一个标记10 a=eval(sqrt(2)a=1.4142 eval(a=sqrt(2)a=1.4142a=feval(sqrt ,2)a=1.4142 11 b=Peter Piper picked a peck of pickled peppers ;findstr(b,)%find spaceans=6 12 19 21 26 29 37findstr(b,p)%find the letter pans=9 13 22 30 38 40 41find(b=p)%for single character searches ans=9 13 22 30 38 40 41findstr(b,
9、cow)%find the word cowans=findstr(b,pick)%find the string pickans=13 30 12 strrep(b,p,P)%capitalize all p sans=Peter PiPer Picked a Peck of Pickled PePPersstrrep(b,Peter,Pamela)%change Peter to Pamelaans=Pamela Piper picked a peck of pickled peppers 13 disp(b)Peter Piper picked a peck of pickled pep
10、persstrtok(b)%ans=Peterc,r=strtok(b)c=Peterr=Piper picked a peck of pickled peppersd,s=strtok(r)d=Pipers=picked a peck of pickled peppers 14 4.24.2 单元数组单元数组15 4.2.14.2.1单元数组的创建单元数组的创建 A(1,1)=1 2 3;4 5 6;7 8 9;A(1,2)=2+3i;A(2,1)=A character atring;A(2,2)=12:-2:0;AA=3x3 double 2.0000+3.0000iA characte
11、r atring 1x7 double A1,1=1 2 3;4 5 6;7 8 9;A1,2=2+3i;A2,1=A character string;A2,2=12:-2:0;AA=3x3 double 2.0000+3.0000iA character string 1x7 double 单元索引单元索引按值寻址按值寻址 A(1,1)ans=3x3 double A1,1ans=1 2 3 4 5 6 7 8 916 celldisp(A)A1,1=1 2 3 4 5 6 7 8 9 A2,1=A character atring A1,2=2.0000+3.0000iA2,2=12 1
12、0 8 6 4 2 0cellplot(A,legend)17 18 B=1 2,John Smith,;2+3i,5B=1x2 double John Smith2.0000+3.0000i 5 C=cell(2,3)C=C(1,1)=This doesnt work?Conversion to cell from char is not possible.C(1,1)=This does workC=This does work C2,3=This works tooC=This does work This works too 19 4.2.24.2.2单元数组处理单元数组处理 AA=3
13、x3 double 2.0000+3.0000i A character string 1x7 double BB=1x2 double John Smith 2.0000+3.0000i 5 C=A;BC=3x3 double 2.0000+3.0000i A character string 1x7 double 1x2 double John Smith 2.0000+3.0000i 520 D=C(1 3,:)D=3x3 double 2.0000+3.0000i1x2 double John Smith C(3,:)=C=3x3 double 2.0000+3.0000i A cha
14、racter string 1x7 double 2.0000+3.0000i 521 4.2.34.2.3获得单元数组的内容获得单元数组的内容 BB=1x2 double John Smith 2.0000+3.0000i 5 x=B2,2x=5 class(x)ans=double y=B(2,2)y=5 y=B(4)y=5 class(y)ans=cell class(y1)ans=double 22 d,e=deal(B:,2)d=John Smithe=5 B:,2ans=John Smithans=5 d=B:,2?Illegal right hand side in assign
15、ment.Too many elements.23 celldisp(A)A1,1=1 2 3 4 5 6 7 8 9A2,1=A character string A1,2=2.0000+3.0000iA2,2=12 10 8 6 4 2 0 A1,1(3,:)ans=7 8 9 A4(2:5)ans=10 8 6 4 A2,1(3:11)ans=character 24 4.34.3 结构数组结构数组4.3.1 创建结构数组 circle.radius=2.5;circle.center=0,1;circle.linestyle=-;circle.color=red;circlecircl
16、e=radius:2.5000 center:0 1 linestyle:-color:red circle(2).radius=3.4;circle(2).color=green;circle(2).linestyle=:;circle(2).center=2.3-1.2;circlecircle=1x2 struct array with fields:radius center linestylecolor 25 circle(2).radius=sqrt(2);circlecircle=1x2 struct array with fields:radius center linesty
17、lecolor circle.radiusans=2.5000ans=sqrt(2)26 Cradius=2.5 3.4;Ccenter=0 1;2.3-1.2;Clinestyle=-:;Ccolor=red,green;circle(3).radius=25.4;circle(3).center=-1 0;circle(3).linestyle=-.;circle(3).color=blue;Cradius(3)=25.4;Ccenter(3,:)=-1 0;Clinestyle3=-.;Ccolor3=blue myfunc(circle)myfunc(Cradius,Ccenter,C
18、linestyle,Ccolor)27 circle(1).filled=yescircle=1x3 struct array with fields:radius center linestyle colorfilled circle.filledans=yesans=ans=circle(2).filled=no;circle(3).filled=yes;circle.filledans=yesans=noans=ye 28 values1=2.5 sqrt(2),25.4;values2=0 1 2.3-1.2-1 0;values3=-,:,-.;values4=red,green,b
19、lue;values5=yes,no,yes;CIRCLE=struct(radius,values1,center,values2,.)linestyle,values3,color,values4,filled,values5)CIRCLE=1x3 struct array with fields:radius center linestyle colorfilled 29 第第4 4章字符串数组、元胞数组和结构数组章字符串数组、元胞数组和结构数组4.1 字符串数组4.2 元胞数组(单元数组)4.3 结构数组(构架数组)30 4.3.24.3.2结构处理结构处理 A=circle CIRC
20、LEA=1x6 struct array with fields:radius center linestyle color filled square.width=5;square.height=14;square.center=zeros(1,2);square.rotation=pi/4;B=circle square?Error using=horzcatCAT arguments are not consistent in structure field number.31 4.3.34.3.3获取结构内容获取结构内容circlecircle=1x3 struct array wit
21、h fields:radius center linestyle colorfilled rad2=circle(2).radiusrad2=sqrt(2)circle(1).radiusans=2.5000 32 col=circle.color?Illegal right hand side in assignment.Too many elements.c1,c2,c3=deal(circle.color)c1=redc2=greenc3=blue33 4.3.44.3.4结构函数结构函数circle=1x3 struct array with fields:radius center
22、linestyle color filled fieldnames(circle)ans=radius center linestyle color filled34 isfield(circle,color)ans=1 isfield(circle,width)ans=0 class(square)ans=struct isstruct(circle)ans=1 d=pi;isstruct(d)ans=0 35 fnames=fieldnames(circle)fnames=radius center linestyle color circle2=rmfield(circle,fnames
23、5)circle2=1x3 struct array with fields:radius center linestyle color circle3=rmfield(circle,radius)circle3=1x3 struct array with fields:center linestyle color filled 36 rad1=getfield(circle,1,fnames1)rad1=2.5000 rad3=getfield(circle,3,fnames1)rad3=25.4000 circle4=setfield(circle,3,fnames1,8)circle4=1x3 struct array with fields:radius center linestyle color filled 37 要点要点字符串数组的创建字符串转换和操作函数单元数组的创建和内容获取结构数组的创建和内容获取
限制150内