matlab字符与字符串_第1页
matlab字符与字符串_第2页
matlab字符与字符串_第3页
matlab字符与字符串_第4页
matlab字符与字符串_第5页
已阅读5页,还剩14页未读 继续免费阅读

下载本文档

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

文档简介

1、马新生南昌大学数学系 字符与字符串CUMCM CUMCM 暑期培训暑期培训2007,7NCU MCM NCU MCM 暑期培训暑期培训简介n本章介绍 MATLAB 用于处理字符(Characters)与字符串(Strings)的指令及相关数据型态。MATLAB 处理字符串的相关指令大部分都放在下列目录之中:nMATLAB 根目录toolboxmatlabstrfunn其中的strfun就是代表String Functions。若要查询与字符和字符串相关的指令,可在 MATLAB 下输入:nhelp strfun 或是 help stringsNCU MCM NCU MCM 暑期培训暑期培训1

2、字符与字符串的基本概念n数个字符(Characters)可以构成一个字符串(Strings)n一个字符串是被视为一个列向量(Row Vector)进行储存n此一字符串中的每一字符(含空格符),是以其 ASCII 码的形式存放于此列向量中的每一个元素(Element)NCU MCM NCU MCM 暑期培训暑期培训字符与字符串的基本概念nMatlab 用单引号来界定字符串变量,多个字符串变量可直接并排,以得到一个新字符串变量,例如:n范例10-2: string102.mnstr3 =I like MATLAB, JavaScript, and Perl!str1 = I like MATLAB

3、,;% 建立字符串变量 str1str2 = JavaScript, and Perl!;% 建立字符串变量 str2str3 = str1 str2% 直接并排str1 及 str2,以建立str3NCU MCM NCU MCM 暑期培训暑期培训字符与字符串的基本概念n欲输入含有单引号的字符串,可重复单引号的使用n若要计算字符串变量的长度(即组成字符的个数),可用 length 指令n范例10-4: string104.mans = 16 sentence = Ive got a date!;length(sentence)% 计算字符串变量 sentence 的长度NCU MCM NCU

4、MCM 暑期培训暑期培训字符串和其ASCII codendouble 指令: 检视字符串变量的储存内容(即 ASCII 内码)nchar 指令: 将 ASCII 内码转回字符串形式n范例10-6: string106.mphraseascii =Columns 1 through 1273 39 118 101 32 103 111 116 32 97 32 100Columns 13 through 1697 116 101 33sentence2 =Ive got a date!sentence = Ive got a date!;sentenceAscii = double(senten

5、ce); %检视 sentence 的 ASCII 码sentence2 = char(sentenceAscii)% 将 ASCII 码转回字符串形式NCU MCM NCU MCM 暑期培训暑期培训字符的储存n无论是中文或英文,每一个字符都会占用两个字节(2 Bytes),故在上页中,字符串变量 sentence 总共由 16 个字符构成,占用的内存总计为三十二个字节(32 bytes)nwhos 指令: 检视字符串变量 sentence 所占用储存空间(whos 变量)nMATLAB 是以两个字节来储存一个字符,所以也可以支持 Big5 的中文码,而且 Big5 中文的 ASCII 内码都

6、会大于数字 128n由于 MATLAB 将字符串以其相对应之 ASCII 内码(即数字形式)储存成一列向量,故若对此字符串直接进行数值运算,MATLAB 会先将此字符串转成数值,再进行一般数值向量的运算NCU MCM NCU MCM 暑期培训暑期培训字符与字符串的基本概念-evalneval 指令: 直接“执行”某一特定字符串,其效果就如同直接在 MATLAB 指令窗口内输入此一特定字符串neval 指令特别适用于在 for - loop 内自动产生有规律的变量名称范例10-11: string111.mName Size Bytes Class x3 3x3 72 double array

7、x4 4x4 128 double array x5 5x5 200 double array x6 6x6 288 double arrayGrand total is 86 elements using 688 bytesnx3 , x4 , x5 , x6 都是在 for - loop 中产生的变量,分别代表维度为 33、44、55、66 的魔方阵clear all % 清除所有变量for i = 3:6eval(x, int2str(i) , = magic( , int2str(i) , ) ; );endwhos x*NCU MCM NCU MCM 暑期培训暑期培训字符串的判断nc

8、lass 或 ischar 指令: 判断某一个变量是否为字符串n范例10-12: string112.mn字符串变量所占用的空间是同长度双精准(Double)数值变数的四分之一chinese = 今日事,今日毕;out1 = class(chinese)% out1 的值是 “char”,代表chinese 是字符串变量x = chinese+1;out2 = ischar(x)% out2 的值是 0,代表 x 不是一个字符串变量NCU MCM NCU MCM 暑期培训暑期培训2 一个变量来储存多个字符串n第一种方法是使用二维字符数组(Two Dimensional Character Ar

9、rays)n必须先确认每个字符串(即每一横列)的长度一样,否则就必须在短字符串结尾补上空格符范例10-13: string201.mdepartments =eecsecondepartments = ee ; cs ; econ% 注意空格符的使用NCU MCM NCU MCM 暑期培训暑期培训一个变量来储存多个字符串n用char 指令储存多个字符串得到结果和前一个范例依样;n从二维字符数组抽取出字符串时,切记要使用 deblank 指令来移除尾部的空格符范例10-15: string203.m.departments = char(ee, cs, econ)% 注意()及,的使用depar

10、tments = char(ee, cs, econ);dept1 = departments(1,:);% (1,:)代表第一列的元素dept2 = deblank(dept1);% 使用 deblank 指令来移除尾部的空格符len1 = length(dept1)% 显示变量 dept1 的长度=4len2 = length(dept2)% 显示变量 dept2 的长度=2NCU MCM NCU MCM 暑期培训暑期培训一个变量来储存多个字符串n当字符串的长度差异甚大,那么使用二维字符数组来储存多个字符串,将造成内存空间的浪费,怎么办?n异质数组: 使用大括号框住多个字符串, 或用cel

11、lstr指令将字符数组转换成异质数组 (string204.m,string205.m)n若要将包含字符串的异质数组转换成一般的二维字符数组,还是可以使用 char 指令NCU MCM NCU MCM 暑期培训暑期培训3 字符串的比较、寻找、代换、分解与结合nstrcmp 指令: 用于比较字符串内容的异同范例10-19: string301.mn不相等回传0,相等回传1nDIFFERENT to Cstr1 = today;str2 = tomorrow;str3 = today;out1 = strcmp(str1, str2)% 比较两字符串 str1 和 str2 = 0out2 = s

12、trcmp(str1, str3)% 比较两字符串 str1 和 str3 = 1NCU MCM NCU MCM 暑期培训暑期培训字符串的比较和寻找nstrncmp 指令: 用于比较字符串的前 n 个字符nstrcmp 及 strncmp 指令亦可用于字符串异质数组nfindstr 指令: 寻找在某一个长字符串中的子字符串(Substrings),并传回其起始位置nstrrep 指令: 用于字符串寻找及代换,例如:newString = strrep(string, pattern, pattern2) NCU MCM NCU MCM 暑期培训暑期培训字符串的分解nstrtok 指令: 根据一

13、给定的分界字符(Delimiting Characters),将一字符串拆解成数个字符串,预设分界字符为空格符nstrvcat 指令: 将拆解下来的字符串内容(即储存在字符串变量 chopped 中) 加到二维字符数组 parsed 中n范例10-24: string306.mparsed =eecseconstatmeinput_string = ee cs econ stat me;remainder = input_string;parsed = ;% 建立一空字符数组while (any(remainder)chopped, remainder = strtok(remainder);

14、parsed = strvcat(parsed, chopped);endparsedNCU MCM NCU MCM 暑期培训暑期培训字符串的结合nMATLAB 在读入中文字符串时,将每一个中文字的 2-byte 分开来读,造成两个中文字变成四个字符串元素nxlate 指令: 将中文的 2-byte 结合在一起n范例10-27: string309.mline2 =我是Rogerans = 7fid = fopen(tbig5.txt);line = fgetl(fid);% 读取一列档案内容fclose(fid);line2 = xlate(line)% 使用 xlate 将被猜开的中文结合

15、在一起leng = length(line2)% 显示字符串长度NCU MCM NCU MCM 暑期培训暑期培训10-4 字串、数值与数组的转换nint2str 指令: 将整数型态的数据转换成字符串数据 例如:y = int2str(x), x为整数, y 为字符串nnum2str 指令: 将实数转为字符串ndec2hex 指令: 将 10 进位数值数据转换成 16 进位的字符串表示法n更多类似指令如 : hex2num, hex2dec, bin2dec.NCU MCM NCU MCM 暑期培训暑期培训字符串数组的转换nmat2str 指令可将矩阵转换为字符串,此字符串若再经由 eval 指令的使用,可再变回原先的矩阵n范例10-32: string405.mB =1 2 1;3 5 6ans = 1A = 1 2 1; 3 5 6 ;B = mat2str(A)% 将矩阵 A 转成字符串 BA2 = eval(B)% 再将字符串 B 转回矩阵 A2isequal(A, A2)% 测试 A 和 A2 是否相等NCU MCM NCU MCM 暑期培训暑期培训字串与数值的结合nsprintf 指令: 结合数值或字符串,以产生新

温馨提示

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

评论

0/150

提交评论