字符串数组元胞数组和构架数组课件.ppt
《字符串数组元胞数组和构架数组课件.ppt》由会员分享,可在线阅读,更多相关《字符串数组元胞数组和构架数组课件.ppt(33页珍藏版)》请在淘文阁 - 分享文档赚钱的网站上搜索。
1、u字符串数组字符串数组(Character String Array)字符串数组的属性和标识字符串数组的属性和标识 复杂字符串数组的创建复杂字符串数组的创建 串转换函数和串操作函数串转换函数和串操作函数u元胞数组元胞数组(Cell Array)元胞数组的创建元胞数组的创建元胞数组的内容显示元胞数组的内容显示元胞数组的内容获取元胞数组的内容获取 元胞数组的扩充、收缩和重组元胞数组的扩充、收缩和重组 u构架数组(构架数组(Structure Array)构架数组的创建构架数组的创建 构架数组数据的获取和设置构架数组数据的获取和设置 构架数组域的获取构架数组域的获取u数据类型归纳数据类型归纳三三、字
2、字符符串串元元胞胞构构架架数数组组13.1 字符串数组字符串数组(Character String Array)【例例31】字符串入门 String1=b;String2=This is an example!;%英文字母、空格、数字、标点、中文字符String3=例子例子char array;%都是占一个元素位,两个字节s1=class(String1)s1=chars2=size(String2)s2=1 19 whos Name Size Bytes Class String1 1x1 2 char array String2 1x19 38 char array String3 1x1
3、4 28 char array s1 1x4 8 char array s2 1x2 16 double arrayGrand total is 40 elements using 92 bytesl 在MATLAB中,字符串是作为字符数组来引入的;l 一个字符串由多个字符组成,用单引号()来界定;l 字符串是按行向量进行存储的,每一字符(包括空格)是以其ASCII码的形式存放.。23.1.1 字符串数组的属性和标识字符串数组的属性和标识 1.创建串数组创建串数组 必须将待建字符放在“单引号对单引号对”中,当串中本身包含单引号时,每个单引号符用“连续的两个单引号连续的两个单引号”表示。2.串数
4、组的大小串数组的大小 size指令可获得串数组的大小。串中的每一个字符,包括中英文字符、空格、标点都算一个元素。3.串数组的元素标识串数组的元素标识按从左至右的顺序依次用1、2、3、4等标识元素在串中的位置。4.串数组的串数组的ASCII码码 指令abs和double可以显示串数组对应的ASCII码数值数组,指令char则可把ASCII码数值数组转换成串数组。5.字符串字符串ASCII码数组的操作码数组的操作 可以对ASCII码数组进行数值数组的各种运算。但其结果就变成一般数值向量的运算,而不再是字符串的运算。注意:注意:l 必须在英文状态下输入必须在英文状态下输入“单引号对单引号对”。l 将
5、多个字符串变量直接用将多个字符串变量直接用“,”连接,可构成一个较长的新字符串变量。连接,可构成一个较长的新字符串变量。3【例例32】串数组基本操作 string=this is an example!%输入字符串stringstring=this is an example!s_1=string(end:-1:1)%倒序排列string得到s_1s_1=!elpmaxe na si siht s_2=string(end:-2:1)%倒序排列string且每隔一个字符取一个元素得到s_2s_2=!lmx as it w=string=a&string STRING=string;%定义新串S
6、TRING,其内容与string相同 STRING(w)=char(string(w)-32)%将小写字符转换成大写字符(ASCII码相差32)STRING=THIS IS AN EXAMPLE!Str=Exm03_2.m,string(5:end)%构造新的字符串StrStr=Exm03_2.m is an example!43.1.2 复杂字符串数组的创建复杂字符串数组的创建 1.多行串数组的直接创建多行串数组的直接创建必须保证各行等长,可以利用增减“空格”来实现。s=Hello,6个字符 Nice to meet you!17个字符?Error using=vertcatAll rows
7、 in the bracketed expression must have the same number of columns.s=Hello,*ones(1,11)补充11个空格 Nice to meet you!s=Hello,Nice to meet you!size(s)ans=2 17 2.利用串操作函数创建多行串数组利用串操作函数创建多行串数组 利用专门的str2mat、strvcat和char函数可以构造出字符串数组,而不必考虑每行的字符数是否相等,总是按最长的设置,不足的末尾用空格补齐。s=char(Hello,Nice to meet you!);s=str2mat(He
8、llo,Nice to meet you!);s=strvcat(Hello,Nice to meet you!);s=Hello,Nice to meet you!5 s1=str2mat(Hello,Nice to meet you!);s2=strvcat(Hello,Nice to meet you!);s1,s2 s_s=size(s),s_s1=size(s1),s_s2=size(s2)s_s=2 17s_s1=3 17s_s2=2 17s1=s2=Hello,Hello,Nice to meet you!Nice to meet you!区别:str2mat认为空串代表空行;s
9、trvcat省略空串。3.利用串转换函数产生数码字符串利用串转换函数产生数码字符串 常用的数组/字符串转换函数有int2str,num2str,mat2str。l int2str:把整数数组转换成字符串数组,非整数将被四舍五入后再转换;l num2str:把非整数数组转换成字符串数组,常用于图形中数据点的标识;l mat2str:把数值数组转换成字符串数组。a=0.9576 0.8 2.151;4.0 5 7.8;23数值数组 a1=int2str(a);%取整数 a2=num2str(a,2);保持2位有效数字,转换为串 a3=mat2str(a,2);保持2位有效数字,转换为一行串a,a1
10、,a2,a36%清除内存变量%时间 t 从 0 到 10 每隔 0.01 均匀采样%对应每一个 t 求 y 值%求最大值 y_max 及其下标 i_max%生成最大值点的横坐标字符串%生成最大值点的纵坐标字符串%三行字符来标识最大值点%图名称字符串%新建一个图形窗%画一条黑色的水平线%保持图形不被清除%蓝色实线画曲线 y(t)%大小为 20 的红色圆点标记最大值点%在最大值点附近显示注释字符%显示图名%显示横坐标名%显示纵坐标名%取消图形保持a=0.9576 0.8000 2.1510 4.0000 5.0000 7.8000a1=1 1 24 5 8a2=0.96 0.8 2.2 4 5 7
11、.8a3=0.96 0.8 2.2;4 5 7.8【例例33】作出函数y=e-2tsin(3t)的图形,并标注最大值点cleart=0:0.01:10;y=exp(-2*t).*sin(3*t);y_max,i_max =max(y);t_text=t=,num2str(t(i_max);y_text=y=,num2str(y_max);max_text=char(Maxium,t_text,y_text);Title=y=exp(-2*t).*sin(3*t);Figureplot(t,zeros(size(t),k)hold onplot(t,y,b)plot(t(i_max),y_max
12、,r.,MarkerSize,20)text(t(i_max)+0.3,y_max+0.05,max_text)title(Title);xlabel(t)ylabel(y)hold off783.1.3 串转换函数和串操作函数串转换函数和串操作函数1.字符串转换函数字符串转换函数(详见P76表3.1-1)指指 令令含含 义义指指 令令含含 义义abs把串译成ASCII码base2decbase,bin,hex与dec之间的转换。base:任意进制串bin:二进制串hex:十六进制串dec:十进制整数char任意类型转换成串bin2decdouble任意类型转换成双精度数值hex2decfpr
13、intf格式化数据写到文件或屏幕dec2basesprintf以控制格式把数值转换为串dec2binsscanf在格式控制下把串转换成数值dec2hexsetstr把ASCII码译成串int2str整数转换成串str2num串转换成数值mat2str数值矩阵转换成串hex2num十六进制串转换成浮点数num2str数值转换成串2.字符串操作函数字符串操作函数(详见P77表3.1-2)l length:用来计算字符串的长度(即组成字符的个数)。l char(s1,s2,):将串s1,s2,逐个写成行,形成多行数组。l class或ischar:用来判断某一个变量是否为字符串。class函数返回c
14、har则表示为字符串,而ischar函数返回1表示为字符串。9l strcmp(s1,s2):比较字符串s1和s2是否相同。返回值如果为1则相同,为0则不同。l findstr(s1,s2):寻找在某个长字符串s1中的子字符串s2,返回其起始位置。l deblank(s):删除字符串尾部的空格。str1=Hello;str2=I like MATLAB%重复单引号来输入含有单引号的字符串 str2=I like MATLAB length(str2)%字符串str2的长度 ans=15 x1=double(str1)%查看字符串str1的ASCII码x1=72 101 108 108 111
15、x2=str1+1%字符串的数值运算x2=73 102 109 109 112 char(x1)%将ASCII码转换成字符串形式ans=Hello char(x2)ans=Ifmmp10 char(str1,str2)形成两行字符ans=Hello I like MATLAB strcat(str1,!,str2,.)形成一长串ans=Hello!I like MATLAB.strcmp(str1,str2)比较两串是否相同ans=0 findstr(str2,like)寻找子串like的起始字符在主串中的下标ans=3 isletter(str2)%以逻辑1指示串中英文字母的位置ans=Co
16、lumns 1 through 12 1 0 1 1 1 1 0 0 1 1 1 1 Columns 13 through 15 1 1 0 class(str1),class(x1),判断变量类型ans=charans=double11l 执行字符串执行字符串 如果需要直接“执行”某一字符串,可以使用eval命令,效果就如同直接在MATLAB命令窗口内输入此命令。str3=a=2*5str3=a=2*5 eval(str3)%执行字符串a=10l 显示字符串显示字符串 字符串可以直接使用disp命令显示出来,即使后面加分号(;)也显示。disp(请输入请输入2*2的矩阵的矩阵a)请输入2*2
17、的矩阵a disp(char(str1,str2);Hello I like MATLABstr1=Hello ,str2=I like MATLABstr1=Hellostr2=I like MATLAB123.2元胞数组元胞数组(Cell Array)特点:特点:l 元胞数组的基本组成单元是元胞元胞数组的基本组成单元是元胞(cell),元胞在数组中以下标来进行区分元胞在数组中以下标来进行区分;l 元胞可以是任何类型、任意大小的数组元胞可以是任何类型、任意大小的数组(如:数值数组、字符串数组、符号对象等);l 一个元胞数组中各个元胞可以是不同类型的内容一个元胞数组中各个元胞可以是不同类型的内
18、容;l 元胞数组的维数不受限制,可以采用单下标或全下标寻址;元胞数组的维数不受限制,可以采用单下标或全下标寻址;l 元胞和元胞里的内容是两个不同范畴的东西,分别通过“元胞外标识(Cell Indexing)”和”元胞内编址(Content Addressing)”来寻访。“外标识的元胞元素”用圆括号对(),而“编址元胞元素内涵”用花括号对,如A(2,3)表示元胞数组A第2行第3列的元胞,A2,3则表示元胞数组A第2行第3列的元胞中的内容。3.2.1 元胞数组的创建元胞数组的创建1.直接使用花括号直接使用花括号创建创建 clearA=This is the first Cell.,1 2;3 4
19、;eye(3),Tom,JaneA=1x23 char 2x2 double 3x3 double 1x2 cell 创建的元胞数组中的元胞A(1,1)是字符串,A(1,2)是数组,A(2,1)是数组,而A(2,2)为一个元胞数组。whos Name Size Bytes Class A 2x2 524 cell arrayGrand total is 49 elements using 524 bytes132.由各元胞创建外标识元胞元素赋值法由各元胞创建外标识元胞元素赋值法 B(1,1)=This is the second Cell.;B(1,2)=5+3*i;B(1,3)=1 2;3
20、4;5 6;B 显示元胞数组B=1x24 char 5.0000+3.0000i 3x2 double3.由各元胞内容创建由各元胞内容创建 编址元胞元素内涵的直接赋值法编址元胞元素内涵的直接赋值法 C1,1=This is the third Cell.;C2,1=magic(4)生成21的元胞数组C=This is the third Cell.4x4 double3.2.2 元胞数组元胞数组 的内容显示的内容显示 在MATALB命令窗口中输入元胞数组的名称,并不直接显示出元胞数组的各元胞元素的内容值,而是显示各元胞元素的数据类型和结构,单元素的元胞除外。1.使用使用celldisp命令显示
21、元胞数组的内容命令显示元胞数组的内容 A1,1=This is the first Cell.A2,1=1 0 0 0 1 0 0 0 1A1,2=1 2 3 4A2,21=TomA2,22=Jane celldisp(A),celldisp(C)C1=This is the third Cell.C2=16 2 3 13 5 11 10 8 9 7 6 12 4 14 15 1表示元胞数组的元胞元素内表示元胞数组的元胞元素内容,容,A2,21表示第表示第2行第行第2列列的元胞元素中存放的元胞数组的元胞元素中存放的元胞数组的第的第1个元胞元素的内容个元胞元素的内容 142.使用使用cellpl
22、ot命令以图形显示元胞数组的内容命令以图形显示元胞数组的内容 cellplot(A)3.2.3 元胞数组的内容获取元胞数组的内容获取 1.取元胞数组的元素内容取元胞数组的元素内容 x1=A1,2%用花括号寻访取A(1,2)元胞元素的内容 x1=1 2 3 4 15【例例34】元胞数组的基本应用C=char(这是这是,元胞数组元胞数组);%两行的字符串数组R=reshape(1:9,3,3);%33 的数值数组S=sym(sin(-3*t)*exp(-t);%符号表达式A(1,1)=C;%对元胞数组 A 进行赋值A 2,1 =S;%注意 和()的区别 当用圆括号来寻址时,所表示的当用圆括号来寻址
23、时,所表示的是元胞,相应地等号右边也应该是是元胞,相应地等号右边也应该是一个元胞;一个元胞;当用花括号来寻址时,所表示当用花括号来寻址时,所表示的是元胞中的内容,可以是任意类的是元胞中的内容,可以是任意类型、大小的数组。型、大小的数组。x2=A1,2(2,2)%取A(1,2)元胞元素的数组第二行第二列内容x2=4 2.取元胞数组的元素取元胞数组的元素 x3=A(1,2)用圆括号寻访得到的是元胞x3=2x2 double 3.使用使用deal函数取多个元胞元素的内容函数取多个元胞元素的内容 x4,x5,x6=deal(A2,3,4)单下标寻址取A的三个元胞内容x4=1 0 0 0 1 0 0 0
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- 字符串 数组 构架 课件
限制150内