matlab程序设计入门20PPT10字元与字串

上传人:大米 文档编号:587470327 上传时间:2024-09-06 格式:PPT 页数:20 大小:165KB
返回 下载 相关 举报
matlab程序设计入门20PPT10字元与字串_第1页
第1页 / 共20页
matlab程序设计入门20PPT10字元与字串_第2页
第2页 / 共20页
matlab程序设计入门20PPT10字元与字串_第3页
第3页 / 共20页
matlab程序设计入门20PPT10字元与字串_第4页
第4页 / 共20页
matlab程序设计入门20PPT10字元与字串_第5页
第5页 / 共20页
点击查看更多>>
资源描述

《matlab程序设计入门20PPT10字元与字串》由会员分享,可在线阅读,更多相关《matlab程序设计入门20PPT10字元与字串(20页珍藏版)》请在金锄头文库上搜索。

1、第十章: 字符与字符串张智星jangcs.nthu.edu.twhttp:/www.cs.nthu.edu.tw/jang清大资工系 多媒体检索实验室2021/8/21本章简介n本章介绍 MATLAB 用于处理字符(Characters)与字符串(Strings)的指令及相关数据型态。MATLAB 处理字符串的相关指令大部分都放在下列目录之中:nMATLAB 根目录toolboxmatlabstrfunn其中的strfun就是代表String Functions。若要查询与字符和字符串相关的指令,可在 MATLAB 下输入:nhelp strfun 或是 help strings2021/8/

2、2210-1 字符与字符串的基本概念n数个字符(Characters)可以构成一个字符串(Strings)n一个字符串是被视为一个列向量(Row Vector)进行储存n此一字符串中的每一字符(含空格符),是以其 ASCII 码的形式存放于此列向量中的每一个元素(Element)2021/8/23字符与字符串的基本概念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,以建立str32021/8/24字符与字符串的基本概念n欲输入含有单引号的字符串,可重复单引号的使用n若要计算字符串变量的长度(即组成字符的个数),可用 length 指令n范例10-4: string104.m ans = 16sentence = Ive got a date!;length(sentence)% 计算字符串变量 sentence 的长度2021/8/25字符串和其ASCII codendouble 指令:

4、 检视字符串变量的储存内容(即 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(sentence); %检视 sentence 的 ASCII 码sentence2 =

5、 char(sentenceAscii) % 将 ASCII 码转回字符串形式2021/8/26字符的储存n无论是中文或英文,每一个字符都会占用两个字节(2 Bytes),故在上页中,字符串变量 sentence 总共由 16 个字符构成,占用的内存总计为三十二个字节(32 bytes)nwhos 指令: 检视字符串变量 sentence 所占用储存空间(whos 变量)nMATLAB 是以两个字节来储存一个字符,所以也可以支持 Big5 的中文码,而且 Big5 中文的 ASCII 内码都会大于数字 128n由于 MATLAB 将字符串以其相对应之 ASCII 内码(即数字形式)储存成一列向

6、量,故若对此字符串直接进行数值运算,MATLAB 会先将此字符串转成数值,再进行一般数值向量的运算2021/8/27字符与字符串的基本概念-evalneval 指令: 直接“执行”某一特定字符串,其效果就如同直接在 MATLAB 指令窗口内输入此一特定字符串neval 指令特别适用于在 for - loop 内自动产生有规律的变量名称范例10-11: string111.mName Size Bytes Class x3 3x3 72 double array x4 4x4 128 double array x5 5x5 200 double array x6 6x6 288 double a

7、rrayGrand 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*2021/8/28字符串的判断nclass 或 ischar 指令: 判断某一个变量是否为字符串n范例10-12: string112.mn字符串变量所占用的空间是同长度双精准(Double)数值变

8、数的四分之一 chinese = 今日事,今日毕;out1 = class(chinese)% out1 的值是 “char”,代表chinese 是字符串变量x = chinese+1;out2 = ischar(x) % out2 的值是 0,代表 x 不是一个字符串变量2021/8/2910-2 一个变量来储存多个字符串n第一种方法是使用二维字符数组(Two Dimensional Character Arrays)n必须先确认每个字符串(即每一横列)的长度一样,否则就必须在短字符串结尾补上空格符范例10-13: string201.mdepartments =eecsecondepar

9、tments = ee ; cs ; econ% 注意空格符的使用2021/8/210一个变量来储存多个字符串n用char 指令储存多个字符串 得到结果和前一个范例依样;n从二维字符数组抽取出字符串时,切记要使用 deblank 指令来移除尾部的空格符范例10-15: string203.m.departments = char(ee, cs, econ)% 注意()及,的使用departments = char(ee, cs, econ);dept1 = departments(1,:);% (1,:)代表第一列的元素dept2 = deblank(dept1);% 使用 deblank 指

10、令来移除尾部的空格符len1 = length(dept1)% 显示变量 dept1 的长度=4len2 = length(dept2)% 显示变量 dept2 的长度=22021/8/211一个变量来储存多个字符串n当字符串的长度差异甚大,那么使用二维字符数组来储存多个字符串,将造成内存空间的浪费,怎么办?n异质数组: 使用大括号框住多个字符串, 或用cellstr指令将字符数组转换成异质数组 (string204.m,string205.m)n若要将包含字符串的异质数组转换成一般的二维字符数组,还是可以使用 char 指令2021/8/21210-3 字符串的比较、寻找、代换、分解与结合n

11、strcmp 指令: 用于比较字符串内容的异同范例10-19: string301.mn不相等回传0,相等回传1nDIFFERENT to Cstr1 = today;str2 = tomorrow;str3 = today;out1 = strcmp(str1, str2)% 比较两字符串 str1 和 str2 = 0out2 = strcmp(str1, str3)% 比较两字符串 str1 和 str3 = 12021/8/213字符串的比较和寻找nstrncmp 指令: 用于比较字符串的前 n 个字符nstrcmp 及 strncmp 指令亦可用于字符串异质数组nfindstr 指令

12、: 寻找在某一个长字符串中的子字符串(Substrings),并传回其起始位置nstrrep 指令: 用于字符串寻找及代换,例如:newString = strrep(string, pattern, pattern2)2021/8/214字符串的分解nstrtok 指令: 根据一给定的分界字符(Delimiting Characters),将一字符串拆解成数个字符串,预设分界字符为空格符nstrvcat 指令: 将拆解下来的字符串内容(即储存在字符串变量 chopped 中) 加到二维字符数组 parsed 中n范例10-24: string306.m parsed =eecseconsta

13、tmeinput_string = ee cs econ stat me;remainder = input_string;parsed = ;% 建立一空字符数组while (any(remainder)chopped, remainder = strtok(remainder);parsed = strvcat(parsed, chopped);endparsed2021/8/215字符串的结合nMATLAB 在读入中文字符串时,将每一个中文字的 2-byte 分开来读,造成两个中文字变成四个字符串元素nxlate 指令: 将中文的 2-byte 结合在一起n范例10-27: string

14、309.mline2 =我是Rogerans = 7fid = fopen(tbig5.txt);line = fgetl(fid);% 读取一列档案内容fclose(fid);line2 = xlate(line)% 使用 xlate 将被猜开的中文结合在一起leng = length(line2)% 显示字符串长度2021/8/21610-4 字符串、数值与数组的转换nint2str 指令: 将整数型态的数据转换成字符串数据 例如:y = int2str(x), x为整数, y 为字符串nnum2str 指令: 将实数转为字符串ndec2hex 指令: 将 10 进位数值数据转换成 16

15、进位的字符串表示法n更多类似指令如 : hex2num, hex2dec, bin2dec.2021/8/217字符串数组的转换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 是否相等2021/8/218字符串与数值的结合nsprintf 指令: 结合数值或字符串,以产生新字符串 (%s-印出字符串,%g-印出数值,可使用 %f 或加上控制印出位数大小的数字 )n范例10-33: string406.m newString =圆周率是 3.14159nsscanf 可依给定的格式来解析出所要的字符串或数值n范例10-34: string407.m mat = 2.0000 4.7000 5.2000str = 圆周率;newString = sprintf(%s是 %g, str, pi)str = 2 4.7 5.2;mat = sscanf(str, %f)2021/8/219部分资料从网络收集整理而来,供大家参考,感谢您的关注!

展开阅读全文
相关资源
正为您匹配相似的精品文档
相关搜索

最新文档


当前位置:首页 > 办公文档 > 工作计划

电脑版 |金锄头文库版权所有
经营许可证:蜀ICP备13022795号 | 川公网安备 51140202000112号