《字符串运算》PPT课件.ppt_第1页
《字符串运算》PPT课件.ppt_第2页
《字符串运算》PPT课件.ppt_第3页
《字符串运算》PPT课件.ppt_第4页
《字符串运算》PPT课件.ppt_第5页
已阅读5页,还剩29页未读 继续免费阅读

下载本文档

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

第三章字符串,一、字符串的赋值,说明字符串以行向量形式进行存储,每个字符占用2个字节。,whosNameSizeBytesClasss1x1122chararrayGrandtotalis11elementsusing22bytes,MATLAB字符串是ASC码的数值数组,它作为字符串表达式进行显示。,例s=howareyous=howareyou,第一节字符串的建立,格式:变量字符串,size(s)ans=111,半角单引号,当输入的字符串中含有单引号时,每个单引号符号都必须使用两个连续的单引号字符。,例a=你好a=你好,当输入的字符串中含有双引号时,双引号可以直接按字符使用。,例a=”你好”a=“你好”,例s4=thisstringarrayhasmultiplerows,size(s4)ans=217,注每行字符串大小应该相等,S4thisstringarrayhasmultiplerows,多行串数组的输入,说明输入的是2行17列矩阵,思考1、s4=thisstringarray;hasmultiplerows?2、s4=thisstringarray,hasmultiplerows?3、s4=thisstringarrayhasmultiplerows?4、s4=thisstringarray;multiplerows?,二、字符串的简单操作,S13=s(3:9)S13=warey,s(end:-1:1)ans=uoyerawoh,s3=s1(1:4),s2s3=这是一个例子,例s=howareyous1=这是一个字符串s2=例子,截取字符串的第3到9个字符,字符串逆序显示,字符串拼装,思考1、s4=s(3:50)?2、s4=s1(3:7)?3、s4=s(end:-2:5)?4、s4=s(end:-2:4)?,length(x)计算字符串x的长度double(x)字符串x的ASCII码存储内容char(x)ASCII码转换成字符串class(x)或ischar(x)判断变量x是否是字符串strcmp(x,y)比较字符串x和y是否相等fingstr(x,x1)返回子串x1在x中的起始位置deblank(x)删除字符串x尾部的空格upper(x)字符串x小写转换成大写lower(x)字符串x大写转换成小写,三、常用字符串函数,例str1=Hello;str2=IlikeMATLAB;str3=你好!;,length(str1)ans=5,double(str1)ans=72101108108111,x=72101108108111;char(x)ans=Hello,x1=class(str1);x2=ischar(str1);x1,x2x1=charx2=1,x为字符串时class(x)返回charischar(x)返回1否则返回0,例已知x=123456789试编程去掉其首部空格。,算法:1、将字符串x逆序,得x12、去除字符串x1尾部空格,得x23、将字符串x3逆序,x=123456789;x1=x(end:-1:1);x2=deblank(x1);x=x1(end:-1:1);,str2num()%字符串转换成数字,但表达式中不能包含工作空间中的变量。,s=pis=pi,str2num(s)ans=3.1416,四、字符串转换函数,x=log(3);s=pij;exp(x)pis=pij;exp(x)pi,str2num(s)ans=,s1=pij;exp(log(3)pis1=pij;exp(log(3)pi,str2num(s1)ans=3.14160+1.0000i3.00003.1416,num2str()%将数字转换成字符串,n=2;ss=num2str(n)ss=2,xx=thereare,num2str(n),kgeggsxx=thereare2kgeggs,B=rand(2,4)%生成数值矩阵B=0.82140.61540.92180.17630.44470.79190.73820.4057,B1=num2str(B,3)%保持3位有效数字,转换为串B1=0.8210.6150.9220.1760.4450.7920.7380.406,四、字符串转换函数,四、字符串转换函数,int2str()%将数字四舍五入为整数,然后转换成字符串mat2str()%将矩阵转换成字符串,A=mat2str(pi/2*eye(2)A=1.57079632679490;01.5707963267949,常用的字符串转换函数参加课本p57表3-2,disp()%将字符串内容显示到命令窗口sprintf()%按照给定格式,数字转换成字符串,返回值为字符串格式fprintf()%按照给定格式把文本写到文件或显示屏上,返回值为显示的字符串的长度sscanf()%按照给定格式从字符串中读取数字,五、字符串输入输出函数,之前的字符串操作函数都是以变量名=字符串的形式输出结果,而无法只输出字符串;或者无法将字符串与另一个计算得到的数值变量显示在同一行上,此时应用到字符串输入输出函数。常用的函数主要有:,五、字符串输入输出函数,sprintf()%把数据按要求的格式转换成字符串,再把它与需要同时显示的字符串组成一个长字符串。,s1=sprintf(圆周率pi=%0.5fn,pi);disp(s1)圆周率pi=3.14159,十进制浮点,小数点后面5位,数据格式符,注从%到f之间的内容是不显示的,它只是规定了数据pi的格式,格式声明命令格式参见课本p56表3-1,换行符,disp()%将字符串内容显示到命令窗口,s1=圆周率pi=3.14159;disp(s1),五、字符串输入输出函数,sscanf()%按照给定格式从字符串中读取数字,s=2.71833.1416s=2.71833.1416A=sscanf(s,%f)A=2.71833.1416,A=sscanf(s,%f,1)A=2.7183A=sscanf(s,%s)A=2.71833.1416,六、字符串计算函数,MATLAB提供了字符串计算函数eval(),可以运行用户创建的M函数,计算并赋值给其他变量。,s=1+6*9/8n=eval(s)n=7.7500,functiony=f1(x)y=x2+2;a=eval(f1(2)a=6,计算符号表达式的值:,调用函数并计算其值:,五、字符串计算函数,s2=a=5;b=2;c=a+b*bs2=a=5b=2c=a+b*bfork=1:3eval(s2(k,:)enda=5b=2c=9,第三章字符串,第二节单元数组的建立,1、单元数组(CellArray)可以看作为一种特殊的矩阵,其基本特征有:,一、单元(元胞)数组的建立,矩阵中每个元素是单元,每个单元在数组中是平等的。单元中可以存放常数、字符串、矩阵等数据。单元数组中各单元的数据类型可以不同。其定义需用大括号,元素间用逗号隔开。单元数组的维数不受限制。2、单元数组的建立元素赋值创建:A(m,n)=orAm,n=数组赋值创建:A=调用函数创建:cell(m,n,p,)orcell(m,n,p,)3、单元数组的标识A(m,n)该元素的数据类型Am,n该元素的具体内容,一、单元数组的建立,方法一:元素赋值创建:A(m,n)=orAm,n=,A(1,1)=MATLAB;A(1,2)=7.0;A(2,1)=矩阵;A(2,2)=123;456;789;,AA=MATLAB7.0矩阵3x3double,A1,1=MATLAB;A1,2=7.0;A2,1=矩阵;A2,2=123;456;789;,AA=MATLAB7.0矩阵3x3double,元素访问:,A(2,2)ans=3x3double,A2,2ans=123456789,一、单元数组的建立,方法二:数组赋值创建:A=,A=矩阵6.5123;2314;56,8A=矩阵6.53x3double,B(2,3)=A(3)B=3x3double,一、单元数组的建立,方法三:调用函数创建:cell(m,n,p,)orcell(m,n,p,),利用cell函数为元胞数组预留空间(1)cell(n)创建一个nn的空元胞数组(2)cell(m,n)orcell(mn)创建一个mn的空元胞数组(3)cell(m,n,p,)orcell(mnp)创建一个mnp的空元胞数组(4)cell(size(A)创建一个与数组A相同大小的空元胞数组,一、单元数组的建立,方法三:调用函数创建:cell(m,n,p,)orcell(m,n,p,),C=cell(3,3)C=,C(1,1)=Thegreatwall;C(1,2)=Thesummerpalace;C(2,1)=12;21;C(3,2)=celldisp;C(3,3)=cellplot,C=ThegreatwallThesummerpalace2x2doublecelldispcellplot,二、单元数组的显示,若单元数组中某个元素的内容较多,则一般采用压缩的形式显示,即只显示单元的数据类型,若需要查看具体内容,则可以调用celldisp和cellplot函数进行具体内容的显示。,C=ThegreatwallThesummerpalace2x2doublecelldispcellplot,celldisp(C)cellplot(C),三、单元数组的操作,单元数组的拼装,C_str=char(这是,元胞数组创建算例1);R=reshape(1:9,3,3);Cn=1+2i;S=sin(-3*t)*exp(-t);A(1,1)=C_str;A(1,2)=R;A(2,1)=Cn;A(2,2)=S;AA=2x10char3x3double1.0000+2.0000isin(-3*t)*exp(-t),C=cell(2);C(:,1)=char(Another,textstring);10:-1:1C=2x11char1x10double,AC=ACA_C=A;C,三、单元数组的操作,单元数组的收缩、重组和内容提取,A_C(3,:)=A_C=2x10char3x3double1.0000+2.0000isin(-3*t)*exp(-t)1x10double,R_A_C=reshape(A_C,2,3)R_A_C=2x10char1x10doublesin(-3*t)*exp(-t)1.0000+2.0000i3x3double,f3=R_A_C1,1(:,1256)f3=这是元胞创建,第三章字符串,第三节结构数组的建立,结构(构架)数组:与单元数组一样,也能在一个数组里存放各类数据。从一定意义上讲,结构数组组织数据的能力比单元数组更强、更富于变化。结构数组的基本组分是结构(Structure)。数组中的每个结构是平等的,它们以下标区分。结构必须在划分域(Fields,字段)后才能使用。数据不能直接存放于结构中,而只能存放在域(字段)中。结构的域可存放任何类型、任何大小的数组(如任意维数值数组、字符串数组、符号对象等)。而且,不同结构的同名域(字段)中存放的内容可以不同。结构(构架)数组的维数不受限制。,一、结构数组的特点,方法一:直接创建结构变量,结构名和域之间用点连接,可含有子域。=张三;student.class=二班student.class.group=5然后可以将其动态扩充为数组:student(2).name=李四;student(2).class=一班student(2).class.group=3在任何需要的时候,也可以为数组动态扩充字段,如增加字段sex:student(1).sex=female;这样,所有student都增加了一个sex字段,而student(1)之外的其他变量的sex字段为空。,二、结构数组的建立,应该注意的是,student的name、class、sex字段不一定是单个数据类型,它们可以是任意数据类型,可以是矩阵、字符串甚至是其他结构变量或单元数组,而且不同字段之间其数据类型不需要相同。数组中不同元素的同一字段的数据类型也不要求一样:student(1).class=二班student(2).class=3,二、结构数组的建立,方法二:利用struct函数创建,使用struct函数也可以创建结构,该函数产生或把其他形式的数据转换为结构数组。struct的使用格式为:s=struct(field1,value1,field2,value2,),二、结构数组的建立,该函数将生成一个具有指定字段名和相应数据的结构数组,若数组中包含多个结构域,各个结构域中的数据又不尽相同,则域的数据value必须是单元数组,且生成的结构数组的维数与单元数组的维数相同。而在数据中不包含元胞的时候,得到的结构数组的维数是11的。例如:s=struct(type,big,little,color,blue,red,x,3,4)s=1x2structarraywithfields:typecolorx,s(1,1)ans=type:bigcolor:bluex:3,预分配结构数组的三种方法,使用“.”符号获取stu=student(1).name利用getfield获取结构数组的数据getfield(array,array_index,field,field_index)sex=getfield(student,1,sex)利用setfield设置结构数组的数据new_structure=setfield(array,array_index,field,field_index,V)stu1=setfield(student,1,sex,male)

温馨提示

  • 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
  • 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
  • 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
  • 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
  • 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
  • 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
  • 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

评论

0/150

提交评论