




版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
1、第七章 字符串处理 7.1 字符阵列 7.2 字符串单元阵列 7.3 字符串比较 7.4 字符串搜索与取代 7.5 字符串与数值之间的变换 7.6 综合设计示例 7.7 字符串函数习题 7.1 字 符 阵 列 在MATLAB中,字符是以其ASCII码表示的,这样可直接在屏幕上显示字符或者在打印机上打印字符。输入字符数据时应用单引号括起来,例如输入 name=西安电子科技大学电子工程学院;这时采用class命令可以检查其类型class(name)ans=char 这说明变量name的类型为字符型,再输入size(name)ans=1 14这说明name占用114向量,从这可以看出每个汉字只占用一
2、个字符位置。众所周知,一个汉字需要用两个字节的内码表示,每个字符应该占用两个字节,这一点可由下列命令得到证实: name1=MATLAB; whos Name Size Bytes Class ans 1x4 8 char array name 1x14 28 char array name1 1x6 12 char arrayGrand total is 24 elements using 48 bytes 变量name含有14个汉字,占用了28个字节,然而,name1包含有6个英文字母,占用12个字节,这说明每个字符都采用16位的ASCII码存储。 7.1.1 字符与ASCII码之间的变换
3、在MATLAB中,每个字符按16位的ASCII码存储,这大大方便了在MATLAB中使用双字节内码字符集,如汉字系统。利用double和char函数可在字符与其ASCII码之间进行转换。例如,在得到上述name和name1后输入 a1=double(name1)a1 = 77 65 84 76 65 66 a=double(name)a = Columns 1 through 8 52983 45234 46567 55251 49094 48316 46323 53671Columns 9 through 14 46567 55251 47524 46028 53671 54458 aname
4、1=char(a1)aname1 =MATLAB aname=char(a)aname =西安电子科技大学电子工程学院 7.1.2 建立二维字符阵列在建立二维阵列时,应注意确保每行上的字符数相等,如果长度不等,应在其后补空格。例如输入 str1=MATLAB ;SIMULINKstr1=MATLAB SIMULINK 必要时可利用blanks函数补上空格,例如输入book1=MATLAB Programming Language;book2=Signal Processing using MATLAB;book3=Control System using MATLAB;book4=Neural
5、 Network using MATLAB;disp(length(book1),length(book2),length(book3),length(book4) 27 30 27 27 BOOK=book1 blanks(3);book2;book3 blanks(3);book4 blanks(3)BOOK =MATLAB Programming Language Signal Processing using MATLABControl System using MATLAB Neural Network using MATLAB 当从字符阵列中提取字符串时,可利用deblank函数删
6、除字符串末尾多余的空格 str2=BOOK(1,:);length(str2)ans = 30 str3=deblank(str2);length(str3)ans =27这说明在str3中已删除了末尾的空格。 7.2 字符串单元阵列 建立字符串单元阵列存储字符串,比字符阵列更方便、更灵活。MATLAB专门为处理字符串单元阵列提供了函数,如cellstr,findstr等。利用cellstr函数可方便地将字符阵列变换成字符串单元阵列。例如,在上面已得到BOOK字符阵列后,输入 BOOKcell=cellstr(BOOK)BOOKcell = MATLAB Programming Languag
7、e Signal Processing using MATLAB Control System using MATLAB Neural Network using MATLAB 建立了字符单元阵列BOOKcell,这时每个元素均为字符串,而且已删除了末尾的空格,这可通过length函数求取其长度来证实。length(BOOKcell1)ans= 27 相反,利用char函数可将字符单元阵列变换成字符阵列, 而且能够自动在阵列元素中加上适当的空格,以便使每行的长度相等。 BOOK1=char(BOOKcell)BOOK1 =MATLAB Programming Language Signal P
8、rocessing using MATLABControl System using MATLAB Neural Network using MATLAB 7.3 字符串比较 比较字符串可有以下几种方式: 比较两个字符串或其部分是否相同。 比较两个字符串中的个别字符是否相同。 可对字符串中的每个元素进行归类,如根据是字母还是非字母进行归类。MATLAB为这些任务提供了一些专用的函数,如strcmp、strcmpi、strncmp、strncmpi和findstr等,它们既适用于字符阵列,也适用于字符单元阵列。 7.3.1 比较字符串是否相同strcmp函数用于比较两字符串是否相同,strcmp
9、i函数则在比较时忽略其大、小写,即ABC等同于abc;strncmp函数用来比较两字符串的前n个字符是否相同,同样strncmpi比较时忽略大、小写。例如,在MATLAB中输入 str1=hello; str2=help!; str3=Hello;k1=strcmp(str1,str2)k1 = 0 k2=strcmp(str1,str3)k2 = 0 k3=strcmpi(str1,str3)k3 = 1 k4=strncmp(str1,str2,3)k4 = 1 7.3.2 比较字符是否相同 当要比较两个字符串中个别字符是否相同时,可采用MATLAB的关系操作符。例如: str1=hell
10、o; str2=help!;k=str1= =str2k = 1 1 1 0 0 实际上,还可以采用其它的关系操作符(、=、!=),这样就可以比较两个字符串的大小关系,当然实际确定其大小关系时采用的是其ASCII码。例如: A=abcd; B=aabe;k1=ABk1 = 0 1 1 0 k2=A=Bk2 = 1 1 1 0 k3=A myaddr=XiDian 134;letter=isletter(myaddr)letter = 1 1 1 1 1 1 0 0 0 0 space=isspace(myaddr)space = 0 0 0 0 0 0 1 0 0 0 联合isletter和i
11、sspace这两个函数,可检测字符串是否全部由字母和空格构成。例如: str1=I wish this book can be beneficial to you; let1=isletter(str1); let2=isspace(str1); let3=let1| let2;if all(let3) disp(所有字符均为英文字母或空格) else disp(字符中包含非英文字母和空格) end 执行后得所有字符均为英文字母或空格如果输入改为str1=My post address is XiDian Box 134;则执行后得字符中包含非英文字母和空格 7.4 字符串搜索与取代 MATL
12、AB为字符串的搜索与取代提供了几个函数findstr、strmatch、strrep、strtok等,这几个函数的灵活运用,可完成比较复杂的任务。例如: str=Example 12 made on 08/18/05;k=findstr(str,08)k = 20 str1=strrep(str,18,19)str1 =Example 12 made on 08/19/05 这里将str中的日期修改为2005年08月19日。 利用strtok函数可找出字符串的首部(第一个分隔符之前的字符串):str2=strtok(str1)str2=Example利用strtok函数还可以完成从英文句子中提
13、取单词,为此编写函数来实现:function allwords=words(sentence)r=sentenceallwords=;while(any(r) w,r=strtok(r); allwords=strvcat(allwords,w);end 这时输入 str1=I wish this book can be benefical to you;str1words=words(str1)str1words= I wish this book can be beneficial to you 7.5 字符串与数值之间的变换 MATLAB提供了一组函数可用来在各种数制之间进行变换。例如:
14、 x=53176251; y=int2str(x)y =53176251 whos Name Size Bytes Class x 1x1 8 double array y 1x8 16 char arrayGrand total is 9 elements using 24 bytes 从这可以看出,x只占用一个存储单元(8个字节),而当它变换成字符时占用了8个字符单元(每个单元占用2个字节)。在将数值表示成字符串时还可以指定位数,如 p=num2str(pi,8)p =3.1415927 d1=bin2dec(10101)d1 = 21 b1=dec2bin(d1,8)b1 =000101
15、01 d2=hex2dec(A1B)d2 = 2587 h2=dec2hex(d2,4)h2 =0A1B d3=base2dec(12210,3)d3 = 156 t3=dec2base(d3,3)t3 =12210 其中,最后一组完成在三进制数与十进制数之间进行转换。 只有利用num2str函数才能将含小数的数值变换成字符串,从而可以在图形标题或标记中使用与数据相关的数值。例如,假设已利用plot(x,y)绘制出图形,则可给x轴加上这样的标记: str1=num2str(min(x);str2=num2str(max(x);str=Vaue of x is from,str1,to,str2
16、; xlabel(str)利用mat2str函数可将矩阵变换成字符串形式。例如: A=round(100*rand(3,3) -50)/100A = 0.4500 -0.0100 -0.0400 -0.2700 0.3900 -0.4800 0.1100 0.2600 0.3200 B=mat2str(A)B =0.45 -0.01 -0.04; -0.27 0.39 -0.48; 0.11 0.26 0.32 7.6 综合设计示例 为说明字符串的应用,设计MATLAB程序对保存在文件中的文本进行处理,要求:(1) 统计文件中字符串error出现的次数。(2) 将文件中的字符串error修改成
17、Error。(3) 统计文件中字符(a,b, t)出现的次数及频度。(4) 统计文件中单词(the, and)出现的次数。 这里假设要处理的文件为bugs.txt,其内容为 LaTeX Error Reports 12 January 1999ERROR REPORTSBefore you report an error please check that: * Your LaTeX system is not more than one year old. New LaTeX releases occur at 6 monthly intervals, thus your problem m
18、ay have already been fixed. * The error is not already fixed by a patch added recently to the current distribution. If you have access to a CTAN archive then you can easily check whether there is already a patch that fixes your problem; so please do so. The patches are described in the files patches
19、.txt and ltpatch.ltx; these are in the current distribution. This check is especially important if you are using a distribution that is more than one month old. * The error is not already mentioned in the documentation of the distribution, e.g. in a .dtx file (in this case it is a feature : -). * Th
20、e error has not already been reported. If you have WWW access, you can search the LaTeX bugs database using this URL: /bugs.html * The error is not caused by software other than the core LaTeX software that is produced and maintained by the LaTeX3 project team (please report problems with other soft
21、ware to the authors or suppliers of that software). * The error is not caused by using an obsolete version of any file or of other software. * You are using the original version of all files, not one that has been modified elsewhere.If you think you have found a genuine bug in a recent version of th
22、ecore LaTeX software, please report it in the following way: * Prepare a *short* test file that clearly demonstrates your problem; see below for a discussion of short. * Run this file through latex to obtain the transcript file (often .log) since you will need to submit this file also.* Generate a b
23、ug report template by running the file latexbug.tex through LaTeX. * Fill in the spaces in the generated template file. Please note that the reporting language is *English* irregardless of the fact, that the address you are sending the bug report to, might not be in an English speaking country. Repo
24、rts received in a language other than English might not be understandable for the person currently looking at bug reports! * Include all necessary information, especially a complete input file, a complete transcript file, and all other files used (if they are not standard). 步骤1:读取文件,建立字符串。为处理文件中的字符串
25、,先打开文件,读取文件,存入字符串变量。这里要用到有关文件的输入/输出函数,本书未对此进行讨论,因此,有必要对文件的输入/输出函数作一简要介绍,详见MATLAB的在线帮助。(1) fid = fopen(filename,permission)可打开指定的文件filename,其中permission用于指定允许的操作方式,当permission取r、w、r+或w+、a时,分别表示可对文件进行读、写、读写、在文件尾写的操作,fid为代表这一文件的文件标识符。 (2) A,count = fread(fid,size,precision)可对已打开的文件fid进行读操作,其中size表示一次读取
26、的字符数,当size取Inf时,表示读至文件尾。precision表示读取的字符的精度,当取char、uchar、schar时,表示读取字符、无符号字符、有符号字符;当取int8、int16、int32、int64时,表示读取整数(8、16、32、64位);当取uint8、uint16、uint32、uint64时,表示读取无符号整数;当取float32、float64时,表示读取浮点数(32、64位)等。A为读取的内容,count记录所读取的长度。(3) count=fwrite(fid,A,precision)可将数据A按指定的格式写入文件fid,输出变量count记录所写入的长度。 (4
27、) status=fclose(fid)可关闭指定的文件fid,status记录关闭文件操作的状态,关闭成功时status=0,否则status=-1;status = fclose(all)表示关闭已打开的所有文件。有了这些函数,可以编写出读取文件字符的函数readfile:function y,count=readfile(filename)fid = fopen(filename);y,count = fread(fid,Inf,char);fclose(fid);这样可方便地读入文件,并建立字符阵列: yi,ct=readfile(bugs.txt); y=char(yi) 步骤2:统
28、计error出现的次数。 这只需要直接应用findstr函数找出字符串error在y中的位置,然后求出位置的个数。 k=findstr(y,error);L1=length(k);disp(字符串error出现的次数为,num2str(L1)执行后得字符串error出现的次数为6 步骤3:将error修改成Error。 这只需要直接应用strrep函数,在字符串y中将error修改成Error,替换结果只显示出第一段。 y1=strrep(y,error,Error);disp(error修改成Error后的结果:)disp(char(y1(1:322)执行后得error修改成Error后的结
29、果: LaTeX Error Reports 12 January 1999ERROR REPORTSBefore you report an Error please check that: * Your LaTeX system is not more than one year old. New LaTeX releases occur at 6 monthly intervals, thus your problem may have already been fixed. 步骤4:统计字符(a,b,t)出现的次数及频度。为统计字符出现的次数,先编写出函数countchar,其中使用了
30、关系操作符:function y=countchar(str,c)统计字符出现的次数k=upper(str)=upper(c);y=sum(k); 还应注意,适当处理大、小写英文字母,这里先将字符都变换成大写字母,然后进行比较,这也说明countchar函数只适用于统计英文字母出现的次数,有了这个函数后可很容易地求出字符 (a,b,t)出现的次数及频度。 c1=countchar(y,a);c2=countchar(y,b);c3=countchar(y,t);disp(字符a,b,t出现的次数分别为,num2str(c1,c2,c3)cc=round(1000*c1/ct,c2/ct,c3/
31、ct)/100;disp(字符a,b,t出现的频度分别为百分之,num2str(cc, -5.2g)执行后得字符a, b, t出现的次数分别为146 33 192字符a, b, t出现的频度分别为百分之0.57 0.13 0.75 步骤5:统计单词(the, and)出现的次数。同样,为统计单词出现的次数,先编写出函数countword,这里先将字符都变换成大写字母,然后利用7.4节设计的单词提取函数words对字符串y进行处理,最后利用strmatch函数查找严格匹配的子字符串: function y=countword(str,w)统计单词出现的次数str1=upper(str);w1=u
32、pper(w);str2=words(str1);k=strmatch(w1,str2,match);y=length(k); 有了这个函数后可以很容易地求出单词出现的次数:w1=countword(y, the);w2=countword(y, and);disp(单词the, and出现的次数分别为, num2str(w1, w2)执行后得单词the,and出现的次数分别为27 3 最后我们给出整个MATLAB程序:clear读取文件,建立字符串yi,ct=readfile(bugs.txt);y=char(yi);统计error出现的次数k=findstr(y,error);L1=len
33、gth(k);disp(字符串error出现的次数为,num2str(L1)将error修改成Errory1=strrep(y,error,Error);disp(error修改成Error后的结果:)disp(char(y1(1:322)统计字符出现的次数(a,b,t)及频度 c1=countchar(y,a);c2=countchar(y,b);c3=countchar(y,t);disp(字符a,b,t出现的次数分别为,num2str(c1,c2,c3)cc=round(1000*c1/ct,c2/ct,c3/ct)/100;disp(字符a,b,t出现的频度分别为百分之,num2str
34、(cc,-5.2g)统计单词出现的次数(the,and)w1=countword(y,the);w2=countword(y,and);disp(单词the,and出现的次数分别为,num2str(w1,w2) 7.7 字符串函数 表7.1 字符串函数 7.7.1 一般函数1char功能:建立字符阵列。格式:S=char(X)S=char(C)S=cahr(t1,t2,t3,) 说明: S=char(X)可将X中以字符ASCII码表示的值转换成相应的字符,利用double函数可作相反的变换。 在S=char(C)中,C表示字符串的单元阵列,这条命令可将单元阵列中的字符串变换成字符阵列S,利用c
35、ellstr可作相反的变换。 在S=char(t1,t2,t3,)中,t1,t2,t3,为字符串的行阵列,则S是以t1,t2,t3,为行构成的二维字符矩阵,其行尺寸取t1,t2,t3,中的最长者,其它字符行阵列在末尾补空格,使所有行阵列等长,从而构成二维字符矩阵S。 例如,分三行打印出其ASCII为32127之间的字符,可输入 s=char(reshape(32:127,32,3)s = !#$%&()*+,-./0123456789:;?ABCDEFGHIJKLMNOPQRSTUVWXYZ_abcdefghijklmnopqrstuvwxyz| 2double 功能:将字符阵列变换成双精度数
36、值。 格式: Y=double(X) 说明: Y=double(X)可将字符阵列X转换成其ASCII码,如果X本身已经是双精度数值,则double函数不起作用。例如: s=ABC; y=double(s)y = 65 66 67 z=double(y)z =65 66 67 3. cellstr功能:从字符阵列中建立单元阵列。格式:C=cellstr(s)说明:(参见6.5节。) 4blanks功能:建立空格字符串。格式:s=blanks(n)说明:s=blanks(n)可产生n个空格。例如:disp(XXX blanks(5) yyy)则可在XXX与yyy之间加上5个空格。 5deblank
37、功能:删除字符串末尾的空格。格式: str=deblank(str) c=deblank(c)说明:str=deblank(str)可删去字符串str中末尾的空格;在c=deblank(c)中,c为字符串的单元阵列,可将deblank函数应用于c中的每个元素。例如: A1,1 = MATLAB ;A1,2 = SIMULINK ;A2,1 = Toolboxes ;A2,2 = The MathWorks A = MATLAB SIMULINK Toolboxes The MathWorks B=deblank(A)B = MATLAB SIMULINK Toolboxes The MathW
38、orks 6. eval功能:计算以字符串表示的MATLAB表达式。格式:a=eval(expresssion)a1, a2, a3, = eval(function(b1, b2, b3, )说明:a=eval(expression)可计算出MATLAB表达式expression的值,expression = string1, int2str(var), string2, ;在a1, a2, a3, = eval(function(b1, b2, b3, )中,b1, b2, b3, 为函数function的输入变量,计算结果保存在a1,a2,a3,中。例如,输入 A = 4*5-3; ev
39、al(A)ans = 17 e,v=eval(eig(2 4; -6 5)e = 0.1936 - 0.6021i 0.1936 + 0.6021i 0.7746 0.7746 v = 3.5000 + 4.6637i 0 0 3.5000 - 4.6637i P = pwd; eval(P)ans =C:Program FilesMATLAB704work 这时可得到程序pwd.m所在的位置。输入D = odedemo ; quaddemo; zerodemo;fitdemo ;n = input(Select a demo number: );eval(D(n,:)则可选择执行不同的演示程
40、序。 7.7.2 字符串测试1ischar功能:检测到字符阵列(字符串)时为逻辑真。格式:k=ischar(s) 说明:在k=ischar(s)中,当s为字符阵列或字符串时,k为逻辑真(其值为1),否则k为0。 2iscellstr功能:检测到字符串的单元阵列时为逻辑真。格式:k=iscellstr(s)说明:在k=iscellstr(s)中,当s为字符串的单元阵列时,k为逻辑真(其值为1),否则k为0。 3isletter 功能:检测到英文字母时为逻辑真。 格式: TF=isletter(str)说明:在TF=isletter(str)中,当str中某一位为英文字母时,对应的TF中的单元为逻
41、辑真,否则为逻辑假。例如: str=MAX is 1200; TF=isletter(str)TF = 1 1 1 0 1 1 0 0 0 0 0 4isspace功能:检测到空格时为逻辑真。格式:TF=isspace(str) 说明:在TF=isspace(str)中,当str中某一位为空白(即空格、换行、回车、制表符Tab、垂直制表符、打印机走纸符)时,相应的TF中的单元为逻辑真,否则为逻辑假。例如: str=MAX is 1200; TF=isspace(str)TF = 0 0 0 1 0 0 1 0 0 0 0 7.7.3 字符串操作1strcat功能:字符串连接。格式:t=strc
42、at(s1,s2,s3,)说明: t=strcat(s1,s2,s3,)可按水平方向连接字符串s1,s2,s3,并忽略尾部添加的空格。所有的输入s1,s2,s3,必须具有相同的行数。当输入全为字符阵列时,t也为字符阵;当输入中包含有字符串的单元阵列时,则t为单元阵列。例如: a=Hello; b=how are you!;c=strcat(a,b)c =Hellohow are you! d=a bd =Hello how are you! 2strvcat功能:字符串的垂直连接。格式:t=strvcat(s1,s2,s3,)说明:strvcat与strcat函数类似,只是按垂直方向连接字符串
43、s1,s2,s3,即以s1,s2,s3,作为t的行,为此会自动在s1,s2,s3,的尾部补空格以形成字符串矩阵。例如: s1=first; s2=string; s3=matrix; s4=second; t1=strvcat(s1,s2,s3)t1 =first stringmatrix t2=strvcat(s4,s2,s3)t2 =secondstringmatrix 3strcmp功能:比较字符串。格式:k=strcmp(str1,str2)TF=strcmp(S,T) 说明: k=strcmp(str1,str2)可对两个字符串str1和str2进行比较,如果两者相同,则返回逻辑真(
44、其值为1),否则返回逻辑假(0);在TF=strcmp(S,T)中,S、T为字符串单元阵列,TF与S、T尺寸相同,且当相应T、S元素相同时其值为1,否则为0。注意T、S必须具有相同的尺寸,或者其中之一为标量。例如: strcmp(Yes,No)ans = 0 strcmp(Yes,Yes)ans =1 A=MATLAB SIMULINK;Toolboxes The MathWorksA = MATLAB SIMULINK Toolboxes The MathWorks B=Handle Graphics Real Time Workshop;Toolboxes The MathWorks B
45、= Handle Graphics Real Time Workshop Toolboxes The MathWorks C=Signal Processing Image Processing;MATLAB SIMULINKC = Signal Processing Image Processing MATLAB SIMULINK strcmp(A,B)ans = 0 0 1 1 strcmp(A,C)ans = 0 00 0 4strcmpi 功能:比较字符串(忽略大、小写)。 格式: k=strcmpi(str1,str2) TF=strcmpi(S,T) 说明: strcmpi与str
46、cmp函数类似,只是在比较时忽略字符的大、小写,有关说明参见strcmp函数。例如: s1=matrix; s2=Matrix; strcmpi(s1,s2)ans = 1 strcmp(s1,s2)ans = 0 5strncmp功能:比较两个字符串的前n个字符。格式:k=strncmp(str1,str2,n)TF=strncmp(S,T,n)说明:strncmp函数与strcmp函数类似,只是strncmp函数根据字符串的前n个字符产生结果,说明部分可参见strcmp函数。例如: s1=MATLAB expression;s2=MATLAB variable;k1=strncmp(s1,
47、s2,6)k1 = 1 k2=strcmp(s1,s2)k2 = 0 6strncmpi功能:比较两个字符串的前n个字符(忽略大、小写)。格式:k=strncmpi(str1,str2,n)TF=strncmpi(S,T,n) 说明:strncmpi与strncmp函数类似,只是strncmpi在比较字符串的前n个字符时,忽略其大、小写,这里不再赘述。例如:s1=MATLAB expression;s2=matlab variable;k1=strncmpi(s1,s2,6)k1 = 1 k2=strncmp(s1,s2,6)k2 = 0 7findstr功能:在字符串中查找子字符串。格式:k
48、 = strfind(str, pattern)k = strfind(cellstr, pattern)k=findstr(str1,str2) 说明:k = strfind(str, pattern)可在字符串str中找出字符串pattern所在的位置,如果在str中包含有多个pattern 字符串,则得到一个行向量,分别给出其位置。k = strfind(cellstr, pattern) 可以在单元阵列cellstr中搜索字符子串pattern。例如: str1=MATLAB is a high-performance language for technical computing.
49、; str2=language; k=findstr(str1,str2)k = 30 8strjust功能:调整字符阵列。格式:t=strjust(s) t=strjust(s,left)t=strjust(s,right) t=strjust(s,center) 说明:t=strjust(s)或t=strjust(s,right)可对字符阵列s中的每行字符按右对齐排列;t=strjust(s,left)则可按左对齐排列;t=strjust(s,center)可按居中对齐排列。例如输入 s=MATLAB ;SIMULINKs =MATLAB SIMULINK t=strjust(s,righ
50、t)t =MATLABSIMULINK 9strmatch功能:查找匹配字符串。格式:k=strmatch(str,STR)k=strmatch(str,STR,exact)说明:k=strmatch(str,STR)可在STR字符串中找出以str开头的字符串位置;k=strmatch(str,STR,exact)可找出严格以str开头的字符串的位置。例如: k1=strmatch(max,strvcat(max,minimax,maximum)k1= 1 3 k2=strmatch(max,strvcat(max,minimax,maximum),exact)k2 = 1 10strrep功
51、能:字符串的搜索与取代。格式:str=strrep(str1,str2,str3)说明:str=strrep(str1,str2,str3)可在字符串str1中找出子字符串str2,并以str3取代。例如: s1= This is a good example.;str = strrep(s1,good,great)str = This is a great example. A =MATLAB,SIMULINK Toolboxes,The MathWorks;B = Handle Graphics,Real Time Workshop Toolboxes,The MathWorks; C =
52、 Signal Processing,Image Processing MATLAB,SIMULINK; strrep(A,B,C)ans= MATLAB SIMULINK MATLAB SIMULINK 11strtok功能:找出字符串的首部。格式:token=strtok(str)token=strtok(str,delimiter)token,rem=strtok() 说明:token=strtok(str,delimiter)可找出字符串str的首部,即位于第一个分隔符之前的一串字符,其中向量delimiter用于指定有效的分隔符。token=strtok(str)可以指定采用缺省的分
53、隔符,即空格(ASCII码为32)、Tabs(ASCII码为9)和回车(ASCII码为13)。token,rem=strtok()除得到字符串的首部token外,还得到了剩余字符串rem。 s=This is a good example.; token,rem=strtok(s)token =Thisrem = is a good example. 例如: 12upper功能:将字符串变换为大写。格式:t=upper(str)B=upper(A)说明:t=upper(str)可将str中的小写字母变换成大写字母,其它字符不变。B=upper(A)可将字符串单元阵列A中的小写字母变换成大写字母
54、。例如: upper(Matlab V7.0)ans =MATLAB V7.0 13lower功能:将字符串变换为小写。格式:t=lower(str)B=lower(A) 说明:t=lower(str)可将str中的大写字母变换为小写字母,其它字符不变。B=lower(A)可将字符串单元阵列A中的大写字母变换成小写字母。例如: lower(Matlab V7.0)ans =matlab v7.0 7.7.4 字符串与数值之间的变换1num2str功能:将数值变换成字符串。格式:str=num2str(A)str=num2str(A,precision)str=num2str(A,format)
55、 说明:num2str函数可将数值变换成字符串表示,利用这种函数可方便地在图形标记和标题中使用数值。str=num2str(A)可将阵列A变换成以四位小数精度表示的字符串,如需要可指定以指数形式表示。在str=num2str(A,precision)中,可在precision中指定有效的数字位数;在str=num2str(A,format)中,可由format指定字符的格式,缺省时取%11.4g,表示最长取11位有效数字,其中4位小数。 表7.2 format格式选项 注意,不是所有的format选项都适用于num2str函数。例如: num2str(pi)ans =3.1416 num2st
56、r(eps)ans =2.2204e-016 num2str(pi,%-10.6e)ans =3.141593e+000 num2str(-pi,%-10.6e)ans =-3.141593e+000 num2str(pi,%10.6f)ans =3.141593 num2str(pi,%-10.6g)ans =3.14159 num2str(pi,%+10.6e)ans =+3.141593e+000 num2str(-pi,%+10.6e)ans =-3.141593e+000 2int2str功能:将整数变换成字符串。格式: str=int2str(N) 说明: str=int2str(
57、N)可将整数N变换成字符串,输入N可以是标量、向量,还可以是矩阵,对输入的非整数值在变换之前被截断。例如: s1=int2str(2+5)s1 =7 s2=int2str(pi)s2 =3 s3=int2str(10*randn(3,3)s3 =-4 3 12-17 -11 0 1 12 3 3mat2str功能:将矩阵变换成字符串。格式: str=mat2str(A) str=mat2str(A,n) 说明:str=mat2str(A)可将矩阵A变换成字符串,这样可用作eval函数的输入;str=mat2str(A,n)可在变换时采用n位精度。例如: A=1 2;3 4A = 1 2 3 4
58、 b=mat2str(A)b =1 2;3 4这时b为字符串,利用eval(b)可重新产生矩阵A。 4str2mat 功能:从字符串中形成矩阵。格式:S = str2mat(T1, T2, T3, )说明:S = str2mat(T1, T2, T3, )可以将由字符串T1, T2, T3, 表示的数据当成矩阵的行,如果字符串不等长,则会自动补上空格。这个函数可以由char函数取代,在以后版本中可能会被废弃。例如: x = str2mat(36842, 39751, 38453, 9030)x =3684239751384539030 5str2num功能:将字符串变换为数值。格式:X=str
59、2num(str)说明:str2num是num2str的逆函数。x=str2num(str)可将表示数值的字符串str变换为数值。例如: str2num(pi)ans = 3.1416 str2num(1.2 3.2;5.8 9.0)ans = 1.2000 3.2000 5.8000 9.0000 6sprintf功能:将格式化数据写入字符串。格式:s=sprintf(format,A,)s,errmsg=sprintf(format,A,) 说明:s=sprintf(format,A,)可对矩阵A(及其它矩阵)中的数据按指定格式(由format指定)进行格式化,并写入MATLAB的字符串变
60、量s中。sprintf函数几乎等同于fprintf函数,只是sprintf函数不将结果写入文件。format用于指定输出格式的表示法、对齐格式、有效数字、域宽度及其它方面的信息,参见表7.2 (format选项格式)。s, errmsg=sprintf(format, A, )还可以在发生错误时得到出错信息errmsg。例如输入 sprintf(%0.5g,(1+sqrt(5)/2)ans =1.618 sprintf(%0.5g,1/eps)ans =4.5036e+015 sprintf(%15.5f,1/eps)ans =4503599627370496.00000 sprintf(%d
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 2025届江苏省镇江市第一中学高考临考冲刺化学试卷含解析
- 2025届河南省开封十中高三最后一卷化学试卷含解析
- 四川省仁寿县青神中学2025届高三第二次模拟考试化学试卷含解析
- 2025年急诊科理论考试含答案
- 陕西省西安市高新沣东中学2025届高考化学二模试卷含解析
- 湖北省黄石二中2025年高三第一次模拟考试化学试卷含解析
- 广东省六校联盟深圳实验广州二中珠海一中惠州一中东莞中学2025届高三二诊模拟考试化学试卷含解析
- 体育器材创新创业项目
- 安徽省合肥新城高升学校2025年高三第二次诊断性检测化学试卷含解析
- 江苏省盐城市景山中学2024-2025学年九年级下学期3月月考历史试题(含答案)
- 子宫肌瘤护理查房-
- 2024年江西省中考地理试卷(含答案解析)
- 《黑神话:悟空》跨文化传播策略与路径研究
- 2024年山东省威海市中考英语试卷(含标准答案及详解)
- 消防设施操作和维护保养规程
- 钢铁项目环评报告 - 7声环境影响评价
- 《功能性食品开发与应用》课件-增强免疫力功能食品的开发与应用
- 大学生心理健康教育(山东联盟)智慧树知到期末考试答案章节答案2024年德州学院
- 统编2024版七年级上册道德与法治第十一课确立人生目标11.2《树立正确的人生目标》教学设计
- DL-T1297-2013电能质量监测系统技术规范
- 标准航海用语
评论
0/150
提交评论