资源描述:
《《Matlab字符数组》PPT课件.ppt》由会员上传分享,免费在线阅读,更多相关内容在教育资源-天天文库。
1、字符数组CharacterArray(CharArray)一、创建字符数组二、字符数组的操作三、字符串和数值之间的转换函数四、不同数制之间的转换函数在MATLAB中,字符串(string)是作为字符数组来引入的。字符串按行向量进行存储,每一字符以其在字符集中的内部编码的形式存放。1、用单引号对‘’创建字符串(一维字符数组)s1=''%生成一个空字符串s2='M's3='MathWorks's4='Acceleratingthepaceofengineeringandscience's5='You''reright!'s6='矩阵实验室'必须将待建字符串放在单引号对中;每个字符
2、占一个元素位,两个字节;当字符串中本身包含单引号时,每个单引号符用连续的两个单引号表示;注意:必须在英文状态下输入“单引号对”。一、创建字符数组2、使用内部编码创建字符串s=char(x)用字符的内部编码x创建相应的字符数组s,x为非负整数数组,实际的字符显示和给定的字符编码有关。x的范围为从0到65535,任何在此范围外的数据都没有定义。字符编码的前128个编码即为ASCII码s1=char()%生成空字符串s2=char(97)s3=char(97:122)s4=char([97:122;65:90])x=19968:19968+99X=reshape(x,10,10)X
3、=X's=char(X)附:ASCII码表(7位)高三位b6b5b4低四位b3b2b1b0获取字符数组的内部编码x=double(s)或x=abs(s)把字符数组s转换为对应的内部编码数值数组x。可以对内部编码数值数组x进行数值数组的各种运算。但其结果就变成一般数值向量的运算,而不再是字符串的运算,可使用char()函数把运算结果转化为对应字符串。t='matlab'x=double(t)-32s=char(x)miwen='Rfyqfg%2%Ymj%Qfslzflj%Tk%Yjhmsnhfq%Htruzynsl'恺撒密码凯撒密码作为一种最为古老的对称加密体制,在古罗马的时候
4、都已经很流行,它的基本思想是:通过把字母移动一定的位数来实现加密和解密。例如,如果密匙是把明文字母的位数向后移动三位,那么明文字母B就变成了密文的E,依次类推,X将变成A,Y变成B,Z变成C,由此可见,位数就是凯撒密码加密和解密的密钥。这个加密方法是以恺撒的名字命名的,当年恺撒曾用此方法与其将军们进行联系。练习:上面的密文是将明文的每个字符(包括字母、空格、符号)按acsii码表后移5位得到的,请破译这段密文。3、用[,]创建字符串(一维字符数组)利用方括号[],可将多个字符串变量用逗号“,”连接,构成一个长的单行字符串。t1='';t2='MATLAB-';t3='TheL
5、anguageOfTechnicalComputing';t4='科学计算语言';s1=[t1,t2,t3]s2=[t2,t3]s3=[t1,t2,t4]s4=[t2,t1,t4]4、用[;]创建多行(二维)字符数组t1='Hello,';t2='Nicetomeetyou!';s=[t1;t2]???Errorusing==>vertcatCATargumentsdimensionsarenotconsistent.利用方括号[],可将多个字符串变量用分号“;”连接,构成一个多行字符串(二维字符数组),但是必须保证各行等长(每行的字符数目相等)。解决办法:必须保证各行等长,
6、可在较短字符串的末尾增加适当数量的“空格”。错误原因:t16个字符t217个字符t1='Hello,';t2=blanks(11);t3='';t4='Nicetomeetyou!';s1=[t1,t2;t4]s2=[t1,t2;t3;t4]s=blanks(n):生成一个包含n个空格的字符串ss1=Hello,Nicetomeetyou!s2=Hello,Nicetomeetyou!空字符串会被忽略掉5、利用函数创建字符数组t1='Hello,';t2='';t3='Nicetomeetyou!';s1=char(t1,t3)s2=char(t1,t2,t3)s1=Hell
7、o,Nicetomeetyou!s2=Hello,Nicetomeetyou!S=char(t1,t2,t3,...)把t1,t2,t3,...作为行,空字符串不会被忽略,生成二维字符数组S,不必考虑每行的字符数是否相等,S的行数等于t1,t2,...的行数之和,S的列数等于最长的字符串的字符数目,较短字符串的末尾用空格补齐。每个字符参数ti,本身是字符数组。t1='Hello,';t2='';t3='Nicetomeetyou!';s1=str2mat(t1,t3)s2=str2mat(t1,t2,t