matlab讲义第五章.ppt
《matlab讲义第五章.ppt》由会员分享,可在线阅读,更多相关《matlab讲义第五章.ppt(34页珍藏版)》请在淘文阁 - 分享文档赚钱的网站上搜索。
1、第五章第五章字符串字符串 5.1 5.1 字符串概念字符串概念5.2 5.2 字符串操作字符串操作 5.3 5.3 字符串转换字符串转换5.1 5.1 字符串概念字符串概念 在在MATLABMATLAB中,数个字符中,数个字符(Characters)(Characters)可以构成一个字符可以构成一个字符串串(Strings)(Strings),一个字串是被视为一个行向量,一个字串是被视为一个行向量(Row Vector)(Row Vector)进进行储存,而这一字符串中的每一字符行储存,而这一字符串中的每一字符(含空格符含空格符),),是以其是以其ASCIIASCII码的形式存放于此行向量中
2、的每一个元素,只是其外显码的形式存放于此行向量中的每一个元素,只是其外显形式仍是可读的字符。如:形式仍是可读的字符。如:phrase=Matlab Program.phrase=Matlab Program.建立字符串变量建立字符串变量phrasephrase phrase=phrase=Matlab Program.Matlab Program.多个字符中变量可直接并排,以得到一个新宁符串变多个字符中变量可直接并排,以得到一个新宁符串变量。例如:量。例如:str=I like MATLABstr=I like MATLAB;建立字符串变量建立字符串变量strlstrl str2=and Pe
3、rl!str2=and Perl!;建立字符串变量建立字符串变量str2str2 str3=strl str2 str3=strl str2 直接行直接行并排串变量并排串变量strlstrl和和str2str2,以建立一个新字符串变量,以建立一个新字符串变量str3str3 str3=str3=I like MATLAB and Perl!I like MATLAB and Perl!提示:提示:MATLABMATLAB用用“单引号单引号”(Single Quote)(Single Quote)来界定字符串来界定字符串变量,而变量,而C C语言则是用语言则是用“双引号双引号”来界定字符串变量来
4、界定字符串变量,这是这是两者不同之处。两者不同之处。要输入含有单引号的字符串,要输入含有单引号的字符串,可重复单引号的使用,例如:可重复单引号的使用,例如:phrase=phrase=I I v got a date!v got a date!,重复重复的使用的使用 phrase=phrase=I ve got a date!I ve got a date!如果要计算字符串变量如果要计算字符串变量phrasephrase的长度的长度(即组成字符的个数即组成字符的个数),可用,可用lengthlength命令:命令:length(phrase)length(phrase)计算字符串变量计算字符串
5、变量phrasephrase的长度的长度 ans=ans=16 16 若要查看字符串变量若要查看字符串变量phrasephrase的储存内容的储存内容(即即ASCIIASCII码码),可使用,可使用doubledouble或或absabs命令,例如:命令,例如:phraseascii=double(phrase)phraseascii=double(phrase)查看查看phrasephrase的的ASCIIASCII码码 phraseascii=phraseascii=Columns l through 12 Columns l through 12 73 39 118 101 32 103
6、 11l 116 32 97 32 100 73 39 118 101 32 103 11l 116 32 97 32 100 Columns 13 through 16 Columns 13 through 16 97 116 101 33 97 116 101 33 若要将字符串变量若要将字符串变量phraseasciiphraseascii储存的储存的ASCIIASCII码转换成字码转换成字符串形式,可用符串形式,可用charchar命令,例如:命令,例如:phrase2=char(phraseascii)phrase2=char(phraseascii)将将ASCIIASCII码转回宁
7、符串码转回宁符串形式形式 phrase2=phrase2=I Ive got a date!ve got a date!由于由于MATLABMATLAB在储存宁符串时,每一个字符会占用两个字在储存宁符串时,每一个字符会占用两个字节节(2bytes)(2bytes)。可使用可使用whoswhos命令来查看字符串变所占用的储存空间:命令来查看字符串变所占用的储存空间:whos phrasewhos phrase 查看工作空间内变量查看工作空间内变量phrasephrase占用内存大占用内存大小小 NameName Size Size Bytes Bytes ClassClass phrase ph
8、rase lxl6 lxl6 32 32 char arraychar array Grand total ls 16 elements using 32 bytes Grand total ls 16 elements using 32 bytes 由于由于MATLABMATLAB是以两个字节来储存一个字符,所以可是以两个字节来储存一个字符,所以可以支持中文。例如:以支持中文。例如:Chinese=Chinese=吉林大学吉林大学,地学部地学部 Chinese=Chinese=吉林大学吉林大学,地学部地学部 中文的中文的ASCIIASCII码都会大于数字码都会大于数字128128,可验证如下
9、:,可验证如下:abs(Chinese)abs(Chinese)ans=ans=Columns 1 through 7 Columns 1 through 7 21513 21513 26519 26519 22823 22823 23398 23398 4444 22320 22320 23398 23398 Column 8 Column 8 37096 37096 由于由于MATLABMATLAB将字符串以其相对应的将字符串以其相对应的ASCIIASCII码码(即数字形式即数字形式)储存成一行向量,所以若对此字符串直接进行数值运算,储存成一行向量,所以若对此字符串直接进行数值运算,其结果
10、就变成一般数值向量的运算,而不再是字符串的运算,其结果就变成一般数值向量的运算,而不再是字符串的运算,例如:例如:x=Chinese+1x=Chinese+1 x=x=Columns l through 6 Columns l through 6 42166 42218 43207 41282 42166 42218 42166 42218 43207 41282 42166 42218 Column 7 Column 7 45735 45735 字符串变量所占用的空间是同长度数值变量的四分之一,字符串变量所占用的空间是同长度数值变量的四分之一,所以如果数据包含很多字符串,尽量以字符串变量来储
11、存数所以如果数据包含很多字符串,尽量以字符串变量来储存数据。据。可用两种方法来储存多个字符串于一个变量之中。第可用两种方法来储存多个字符串于一个变量之中。第一种方法是使用二维字符数组,但必须先确认每个字符串一种方法是使用二维字符数组,但必须先确认每个字符串(即每一行即每一行)的长度一样,否则就必须在短字符串结尾补上的长度一样,否则就必须在短字符串结尾补上空格符,以确保每一字符串均有相同的长度。例如:空格符,以确保每一字符串均有相同的长度。例如:departments=eedepartments=ee;cs;cs;econ;econ注意注意“”、“;”和空格符号的使用和空格符号的使用 depar
12、tments=departments=eeee cs cs econ econ departments1=departments1=ee;ee;cs;econ cs;econ departments1=departments1=ee ee cs cs econ econ 请注意上述二个字符串均各由请注意上述二个字符串均各由4 4个字符个字符(含空格符含空格符)构构成,故其长度均为成,故其长度均为4 4,共占用内存大小为,共占用内存大小为2424个字节个字节(即即3 3个个字符串字符串*4 4个字符个字符*2 bytes=24 bytes)2 bytes=24 bytes)。department
13、s2=ee,cs,econdepartments2=ee,cs,econ 注意注意“”、“,”符号的使用符号的使用 departments2=departments2=eecsecon eecsecon 第二种存储存多个宇符串于第二种存储存多个宇符串于个变量的方法,是使用个变量的方法,是使用charchar命令,例如:命令,例如:departments3=char(ee,cs,econ)departments3=char(ee,cs,econ)注意注意“()()”及及“,”的使用的使用 departments3=departments3=ee ee cs cs econ econ 在从二维字符
14、数组抽取出字符串时,切记要使用在从二维字符数组抽取出字符串时,切记要使用deblankdeblank命令来删命令来删除尾部的空格符,例如:除尾部的空格符,例如:deptl=departments(1,:)deptl=departments(1,:)%(1,:)%(1,:)代表第代表第一行的元素一行的元素 dept1=dept1=ee ee dept2=deblank(departments(1,:)dept2=deblank(departments(1,:)%使用使用deblankdeblank命令来移命令来移除除 dept2=dept2=%尾部的空格尾部的空格 eeee length(dep
15、t1)length(dept1)%显示变量显示变量deptldeptl的长度的长度 ans=ans=4 4 length(dept2)length(dept2)%显示变量显示变量dept2dept2的长度的长度 ans=ans=2 2 如果字符串的长度差异较大,那么使用二维字符数如果字符串的长度差异较大,那么使用二维字符数组来储存多个字符串,将造成内存空间的浪费。可使用组来储存多个字符串,将造成内存空间的浪费。可使用“异质数组异质数组”。如:。如:celldata=ee,cs,eooncelldata=ee,cs,eoon 以异质数组来储存多以异质数组来储存多个字符串,注意个字符串,注意“,”
16、及及“,”符号的使用符号的使用 celldata=celldata=ee ee cs cs econ econ 可以使用可以使用cellstrcellstr命令将字符数组转换成异质数组:命令将字符数组转换成异质数组:celldata=cellstr(departments)celldata=cellstr(departments)celldata=celldata=ee ee cs cs econ econ 在上例中,在上例中,cellstrcellstr命令将字符数组命令将字符数组departmentsdepartments转换成转换成异质数组异质数组celldatacelldata储存,而
17、原先补在字符数组储存,而原先补在字符数组departmentsdepartments结尾的空格符已被删除,可用结尾的空格符已被删除,可用lengthlength命令验证如下:命令验证如下:length(celldata2)length(celldata2)显示异质数显示异质数组组celldatacelldata第第2 2个元素长度个元素长度 若要将包含字符串的异质数组转换成一般的二维字符数若要将包含字符串的异质数组转换成一般的二维字符数组,可用组,可用charchar命令,例如:命令,例如:strdepts=char(celldata)strdepts=char(celldata)异质数组异质
18、数组celldatacelldata转换成字符数组,结尾补空。转换成字符数组,结尾补空。strdepts=strdepts=ee ee cs cs econ econ5.2 字符串操作 函数函数dispdisp允许不显示它的变量名而显示一个字符串。允许不显示它的变量名而显示一个字符串。例如:例如:v=I cant find the manual!v=I cant find the manual!v=v=I cant find the manual!I cant find the manual!disp(v)disp(v)I cant find the manual!I cant find th
19、e manual!函数函数inputinput能输入一个字符串:能输入一个字符串:x=input(x=input(Enter anything Enter anything ,s s)Enter anything anything can be enteredEnter anything anything can be entered x=x=anything can be entered anything can be entered 这里,在函数这里,在函数inputinput里的附加参量里的附加参量s s告诉告诉MATLABMATLAB,作为一个字符串,只要把用户输入传送到输出变量,就不
20、作为一个字符串,只要把用户输入传送到输出变量,就不需要引号。需要引号。如果要直接如果要直接“执行执行”某一特定字符串,可以使用某一特定字符串,可以使用evaleval命令命令,其效果就如同直接在其效果就如同直接在MATLABMATLAB命令窗口内输入此一特定命令窗口内输入此一特定字符串,例如:字符串,例如:str=str=x=1 2 3;y=x.2x=1 2 3;y=x.2;eval(str)eval(str)y=y=1 1 4 4 9 9 此结果和从此结果和从MATLABMATLAB命令窗口内直接输入的执行的结果命令窗口内直接输入的执行的结果一致,例如:一致,例如:x=1 2 3x=1 2
21、3;y=x.2y=x.2 y=y=1 1 4 4 9 9可以用可以用classclass命令或命令或ischarischar命令来判断某一个变量是命令来判断某一个变量是否为字符串,例如:否为字符串,例如:class(Chinese)class(Chinese)返回值返回值charchar,代表,代表变量变量ChineseChinese是字符串变量是字符串变量 ans=ans=char char ischar(x)ischar(x)返回值返回值0 0,代,代表变量表变量x x不是一个字符串变量不是一个字符串变量 ans=ans=0 0 strcmpstrcmp命令用于比较字符串内容的异同,例如:
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- matlab 讲义 第五
限制150内