字符数组CharacterArray.ppt
《字符数组CharacterArray.ppt》由会员分享,可在线阅读,更多相关《字符数组CharacterArray.ppt(73页珍藏版)》请在三一办公上搜索。
1、,字符数组Character Array,一、创建字符数组二、字符数组在绘图中的简单应用三、字符数组的基本操作四、字符串元胞数组五、常用字符串函数,字符串在数据的可视化、应用程序的交互等方面有重要的作用。MATLAB中,字符串(string)是作为字符数组来引入的。字符串按行向量进行存储,每一字符以其在字符集中的内部编码的形式存放。,1、用单引号对 创建字符串(一维字符数组),s1=%生成一个空字符串s2=Ms3=MathWorkss4=Accelerating the pace of engineering and sciences5=Youre right!s6=矩阵实验室,必须将待建字符
2、串放在单引号对中;每个字符占一个元素位,两个字节;当字符串中本身包含单引号时,每个单引号符用连续的两个单引号表示;,注意:必须在英文状态下输入“单引号对”。,一、创建字符数组,2、函数char():使用内部编码创建字符串,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+9
3、9X=reshape(x,10,10)X=Xs=char(X),附:ASCII码表(7位),高三位 b6b5b4,低四位b3b2b1b0,字符0的编码:48字符A的编码:65字符a的编码:97,获取字符数组的内部编码,x=double(s)或 x=abs(s)把字符数组s转换为对应的内部编码数值数组x。可以对内部编码数值数组x进行数值数组的各种运算。但其结果就变成一般数值向量的运算,而不再是字符串的运算,可使用char()函数把运算结果转化为对应字符串。,t=matlabx=double(s1)-32s=char(x),miwen=Rfyqfg%2%Ymj%Qfslzflj%Tk%Yjhmsn
4、hfq%Htruzynsl,恺撒密码,凯撒密码作为一种最为古老的对称加密体制,在古罗马的时候都已经很流行,它的基本思想是:通过把字母移动一定的位数来实现加密和解密。例如,如果密匙是把明文字母的位数向后移动三位,那么明文字母B就变成了密文的E,依次类推,X将变成A,Y变成B,Z变成C,由此可见,位数就是凯撒密码加密和解密的密钥。这个加密方法是以恺撒的名字命名的,当年恺撒曾用此方法与其将军们进行联系。,练习:上面的密文是将明文的每个字符(包括字母、空格、符号)按acsii码表后移5位得到的,请破译这段密文。,3、用,创建字符串(一维字符数组),利用方括号,可将多个字符串变量用逗号“,”连接,构成一
5、个长的单行字符串。,t1=;t2=MATLAB-;t3=The Language Of Technical Computing;t4=科学计算语言;s1=t1,t2,t3s2=t2,t3s3=t1,t2,t4s4=t2,t1,t4,4、用;创建多行(二维)字符数组,t1=Hello,;t2=Nice to meet you!;s=t1;t2,?Error using=vertcatCAT arguments dimensions are not consistent.,利用方括号,可将多个字符串变量用分号“;”连接,构成一个多行字符串(二维字符数组),但是必须保证各行等长(每行的字符数目相等)
6、。空字符串会被忽略掉。,解决办法:必须保证各行等长,可在较短字符串的末尾增加适当数量的“空格”。,错误原因:t1 6个字符t2 17个字符,t1=Hello,;t2=blanks(11);t3=;t4=Nice to meet you!;s1=t1,t2;t4s2=t1,t2;t3;t4,5、函数blanks(n):创建包含 n 个空格的字符串s,s1=Hello,Nice to meet you!,s2=Hello,Nice to meet you!,s1=Hello,Nice to meet you!,s2=Hello,Nice to meet you!,(1)S=strvcat(t1,t
7、2,t3,.)把t1,t2,t3,.作为行,空字符串会被忽略掉,生成二维字符数组S,不必考虑每行的字符数是否相等,S的行数等于t1,t2,.的行数之和,S的列数等于最长的字符串的字符数目,较短字符串的末尾用空格补齐。每个字符参数 ti,本身是字符数组。,t1=Hello,;t2=;t3=Nice to meet you!;s1=strvcat(t1,t3)s2=strvcat(t1,t2,t3),6、创建字符数组的一些常用函数,(2)t=strcat(s1,s2,s3,.)将字符数组s1,s2,s3的对应行级联(在水平方向上)。所有输入数组必须具有相同的行数。输入字符数组中尾部的空格被忽略,不
8、出现在输出中。,a=hello b=goodbyec=strcat(a,b),c=hellogoodbye,s1=strvcat(MathWorks-,Matlab-)s2=Accelerating the pace of engineering and sciences3=The Language Of Technical Computings4=strvcat(s2,s3)s5=strcat(s1,s4),t1=Hello,;t2=;t3=Nice to meet you!;s1=char(t1,t3)s2=char(t1,t2,t3),s1=Hello,Nice to meet you!
9、,s2=Hello,Nice to meet you!,(3)S=char(t1,t2,t3,.)把t1,t2,t3,.作为行,空字符串不会被忽略,生成二维字符数组S,不必考虑每行的字符数是否相等,S的行数等于t1,t2,.的行数之和,S的列数等于最长的字符串的字符数目,较短字符串的末尾用空格补齐。每个字符参数 ti,本身是字符数组。,t1=Hello,;t2=;t3=Nice to meet you!;s1=str2mat(t1,t3)s2=str2mat(t1,t2,t3),s1=Hello,Nice to meet you!,s2=Hello,Nice to meet you!,(4)S
10、=str2mat(t1,t2,t3,.)把t1,t2,t3,.作为行,空字符串不会被忽略,生成二维字符数组S,不必考虑每行的字符数是否相等,S的行数等于t1,t2,.的行数之和,S的列数等于最长的字符串的字符数目,较短字符串的末尾用空格补齐。每个字符参数 ti,本身是字符数组。,str2mat(t1,t2,.)的功能与char(t1,t2,.)一样,matlab在帮助中说明:This routine will become obsolete(已不用的;已废弃的;过时的)in a future version.Use char instead,1、plot(x,y,LineSpec),用字符数组
11、 LineSpec 指定线型,点标记和画线的颜色,LineSpec的三种属性可以全部指定,也可以只指定其中某一个或两个,排列顺序任意。,二、字符数组在绘图中的简单应用,x=0:0.2:2*piy=sin(x)plot(x,y,r-o),x=0:0.2:2*piy=sin(x)plot(x,y,ro),指定不指定线型的话,plot()只绘制点标记,2、plot(x,y,LineSpec,PropertyName,PropertyValue)对plot生成的图形对象,用指定的properties进行设置。用字符数组PropertyName指定具体的属性,Color 非标准颜色可用r,g,b指定,r
12、,g,b取0和1之间的数值LineWidth线宽LineStyle线型Marker点标记MarkerEdgeColor marker的颜色(或 filled markers 边的颜色)MarkerFaceColorthe face of filled markers 的颜色MarkerSize点标记的大小,PropertyName,filled markers circle,square,diamond,pentagram,hexagram,and the four triangles),x=-pi:pi/10:pi;y=tan(sin(x)-sin(tan(x);plot(x,y,-rs,L
13、ineWidth,2,.MarkerEdgeColor,k,.MarkerFaceColor,g,.MarkerSize,10),3、title(text)添加图形标题,例:,xlabel(text)添加 X 坐标轴标注ylabel(text)添加 Y 坐标轴标注zlabel(text)添加 Z 坐标轴标注,例:,4、xlabel()/ylabel()/zlabel(),5、legend(string1,string2,.)在图形中添加图例,x=0:0.05:7y1=log10(x)y2=sin(x)plot(x,y1,b,x,y2,r)axis(0,7,-2,2)legend(Log(x),
14、Sin(x),6、text()在图形中指定位置添加文本,text(x,y,string)在点(x,y)处添加文本text(x,y,string,PropertyName,PropertyValue.),x=0:0.05:7y=log10(x)plot(x,y)s=leftarrow Log(x)text(2,0.2,s,fontsize,20),7、使用TeX/LaTeX在图形中添加希腊字母、数学符号及公式,在Matlab的text对象的函数中(函数 title、xlabel、ylabel、zlabel、text、legend),说明文字除使用标准的ASCII字符外,还可使用 TeX/LaTe
15、X 格式的控制字符,这样就可以在图形中添加希腊字母、数学符号及公式等内容。Matlab支持两个层次的 TeX,通过 text的Interpreter属性来设置:tex 默认设置,支持 TeX 的一个子集latex 支持 LaTeXnone 不支持,TeX是D.E.Knuth 开发的免费的功能强大的排版系统,是公认的数学公式排得最好的系统。LaTeX是由L.Lamport编写的一个目前最流行的TeX宏包(宏集、扩展),特别适合数学类论文、书籍的排版,也可以排版普通的文章和书籍。,(1)TeX Character Sequence,bf:设置字体为粗体字。it:设置字体为斜体字。sl:设置字体为斜
16、体字,很少使用。rm:设置字体为正常字体。fontname字体名:设置字体名。例如:fontname宋体fontsize字体大小:设置字体大小。例如:fontsize16_下标 表示下标,若下标只有一个字符,可省略 上标 表示上标,若上标只有一个字符,可省略,(2)Tex字符的字体设置,例:使用TeX输入数学表达式,title(itAe-alphaittsinbetaitt alphabeta)xlabel(Time musec.)ylabel(Amplitude),color颜色名颜色名颜色名有12种,分别为red、green、yellow、magenta、blue、black、white、
17、cyan、gray、barkGreen、orange和lightBlue。例如:colormagentamagentacolorrgba b c设置字体颜色为RGB矩阵a b c所表示的颜色。a、b和c都在0 1范围内。例如:colorrgb0.5.5,(3)Tex字符的颜色设置,str=黑colorred红colorgreen绿colorrgb0 0 1蓝黑text(0.1,0.5,str,fontsize,24,fontname,黑体),例:使用TeX指定字符颜色,(LaTeX命令)$LaTeX命令$LaTeX命令$,在matlab中,使用Latex命令可用下面的方法:,s1=$y_1=e
18、xsin(x)$s2=$y_2=frac12sqrt3x$str=char(s1,s2)text(0.2,0.5,str,Interpreter,latex,FontSize,16),(4)使用Latex,legend()函数必须先获得句柄,才可以设置Interpreter属性h=legend(str1,str2,)set(h,interprete,latex),上标用 上标,下标用 _下标,希腊字母与TeX一样,用 alpha 等表示分式$frac分子分母$根式$sqrtx$、$sqrtnx$求和$sum_i=1n x_i$积分$int_01$偏微分$frac partialy partia
19、lx$极限$lim_n rightarrow infty$%n趋于无穷符号在lim正下方$lim_n rightarrow infty$%n趋于无穷符号在lim右下角上划线$overlinex$下划线$underlinex$%下划线在x的正下方卧式花括号命令$overbracex+y+z+w$仰式花括号命令$a+underbraceb+c+d$,(5)常用 LaTeX 命令,更多的 LaTeX 命令请参考相关的 LaTeX 资料,1、字符数组中元素及子数组的访问与赋值,与数值数组一样,可用双下标,也可用单下标访问字符数组中的元素和子数组。,s=strvcat(MathWorks,Matlab)
20、ch1=s(2,5)ch2=s(11)s1=s(:,end:-1:1)s(16)=xs(2,9)=ys(:,1)=s(:,end)=zd=s(:),练习:试写出这些matlab语句的输出结果,并在matlab中进行验证。,三、字符数组的基本操作,2、字符数组的关系运算,可以使用关系运算符进行字符数组的比较,但是要求比较的两个数组维数相同,或者其中一个是标量。,A=fate;B=cake;A=Bans=0 1 0 1 A Bans=1 0 1 0,3、一些通用函数,size()获得字符数组的大小(行数、列数)length()获得字符数组的长度(行数、列数中的较大值)numel()获得字符数组的字
21、符总数(总数=行数列数)disp()在command windows中显示字符数组的内容sort()按照字符的内部编码值对字符串排序,s=strvcat(MathWorks,Matlab);len=length(s)r,c=size(s)n=numel(s)disp(s)s1=sort(s)s2=sort(s,2)s2=sort(s,descend)s2=sort(s,2,descend),练习:试写出这些matlab语句的输出结果,并在matlab中进行验证。,S.或 S 对字符数组S进行转置操作reshape(S,m,n)总元素数目不变,改变字符数组的行、列repmat(S,m,n)按指定
22、行、列平铺字符数组rot90(S,k)逆时针旋转字符数组fliplr(S)左右翻转字符数组flipud(S)上下翻转字符数组,s=char(65:89)s1=reshape(s,5,5)s2=s1.s3=rot90(s2)s4=fliplr(s3)s5=flipud(s4)s6=repmat(s5,2,2),练习:试写出这些matlab语句的输出结果,并在matlab中进行验证。,diag(S,k)提取二维字符数组S的第k条对角线元素diag(t,k)构成二维字符数组,其第k条对角线的元素由一维字符数组 t 中的元素构成,其余位置元素为字符char(0)tril(S)、triu(S)提取字符数
23、组的下(上)三角元素,其余位置元素以字符char(0)替换,x=reshape(65:89,5,5)s=char(x)s1=tril(s)s2=triu(s)s3=diag(s,1)s4=diag(s3),练习:试写出这些matlab语句的输出结果,并在matlab中进行验证。,四、字符串元胞数组Cell Arrays of Strings,字符串元胞数组叫字符数组而言,其优点是不要求每个字符串的长度相同,给用户的数据输入和整合提供了方便。,1、使用 创建字符串元胞数组,cs1=China,City,ShangHaics1=China City ShangHai,cs2=China;City;
24、ShangHaics2=China City ShangHai,2、cellstr():将普通字符数组转为字符串元胞数组,data=Allison Jones;Development;Phoenix;celldata=cellstr(data)celldata=Allison Jones Development Phoenix,cellstr()会删除字符串尾部的空格,char():可将字符串元胞数组转为普通字符数组,str=char(celldata)str=Allison JonesDevelopment Phoenix,char()会在字符串尾部添加空格,使得每个字符串长度相同,3、is
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- 字符 数组 CharacterArray
链接地址:https://www.31ppt.com/p-5699572.html