字符串数组、元胞数组和构架数组

上传人:xh****66 文档编号:62384507 上传时间:2018-12-20 格式:PPT 页数:33 大小:538KB
返回 下载 相关 举报
字符串数组、元胞数组和构架数组_第1页
第1页 / 共33页
字符串数组、元胞数组和构架数组_第2页
第2页 / 共33页
字符串数组、元胞数组和构架数组_第3页
第3页 / 共33页
字符串数组、元胞数组和构架数组_第4页
第4页 / 共33页
字符串数组、元胞数组和构架数组_第5页
第5页 / 共33页
点击查看更多>>
资源描述

《字符串数组、元胞数组和构架数组》由会员分享,可在线阅读,更多相关《字符串数组、元胞数组和构架数组(33页珍藏版)》请在金锄头文库上搜索。

1、1,字符串数组(Character String Array),字符串数组的属性和标识,复杂字符串数组的创建,串转换函数和串操作函数,元胞数组 (Cell Array),元胞数组的创建,元胞数组的内容显示,元胞数组的内容获取,元胞数组的扩充、收缩和重组,构架数组(Structure Array),构架数组的创建,构架数组数据的获取和设置,构架数组域的获取,数据类型归纳,三、字符串元胞构架数组,2,3.1 字符串数组(Character String Array),【例31】字符串入门,String1=b; String2=This is an example!; % 英文字母、空格、数字、标点

2、、中文字符 String3=例子char array; %都是占一个元素位,两个字节 s1=class(String1) s1 = char,s2=size(String2) s2 = 1 19, whos Name Size Bytes Class String1 1x1 2 char array String2 1x19 38 char array String3 1x14 28 char array s1 1x4 8 char array s2 1x2 16 double array Grand total is 40 elements using 92 bytes,在MATLAB中,字

3、符串是作为字符数组来引入的; 一个字符串由多个字符组成,用单引号()来界定; 字符串是按行向量进行存储的,每一字符(包括空格)是以其ASCII码的形式存放.。,3,3.1.1 字符串数组的属性和标识,1. 创建串数组,必须将待建字符放在“单引号对”中,当串中本身包含单引号时,每个单引号符用“连续的两个单引号”表示。,2. 串数组的大小,size指令可获得串数组的大小。串中的每一个字符,包括中英文字符、空格、标点都算一个元素。,3. 串数组的元素标识,按从左至右的顺序依次用1、2、3、4等标识元素在串中的位置。,4. 串数组的ASCII码,指令abs和double可以显示串数组对应的ASCII码

4、数值数组,指令char则可把ASCII码数值数组转换成串数组。,5. 字符串ASCII码数组的操作,可以对ASCII码数组进行数值数组的各种运算。但其结果就变成一般数值向量的运算,而不再是字符串的运算。,注意: 必须在英文状态下输入“单引号对”。 将多个字符串变量直接用“,”连接,可构成一个较长的新字符串变量。,4,【例32】串数组基本操作, string=this is an example! %输入字符串string string = this is an example!, s_1=string(end:-1:1) %倒序排列string得到s_1 s_1 = !elpmaxe na s

5、i siht, s_2=string(end:-2:1) %倒序排列string且每隔一个字符取一个元素得到s_2 s_2 = !lmx as it, w=string=a&string=z %找出所有小写英文字符,用逻辑数组表示 w = Columns 1 through 12 1 1 1 1 0 1 1 0 1 1 0 1 Columns 13 through 19 1 1 1 1 1 1 0, STRING=string; %定义新串STRING,其内容与string相同 STRING(w)=char(string(w)-32)%将小写字符转换成大写字符(ASCII码相差32) STRI

6、NG = THIS IS AN EXAMPLE!, Str=Exm03_2.m,string(5:end) %构造新的字符串Str Str = Exm03_2.m is an example!,5,3.1.2 复杂字符串数组的创建,1. 多行串数组的直接创建,必须保证各行等长,可以利用增减“空格”来实现。, s=Hello, 6个字符 Nice to meet you! 17个字符 ? Error using = vertcat All rows in the bracketed expression must have the same number of columns., s=Hello

7、, *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(Hello, Nice to meet you!); s=strvcat(Hello, Nice to meet you!);,s = Hello,

8、 Nice to meet you!,6, 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 17 s_s1 = 3 17 s_s2 = 2 17,s1 = s2 = Hello, Hello, Nice to meet you! Nice to meet you!,区别: str2mat认为空串代表空行; strvcat省略空串。,3. 利用串转换函数产生数码字符串,常用的数组/

9、字符串转换函数有int2str , num2str , mat2str 。 int2str:把整数数组转换成字符串数组,非整数将被四舍五入后再转换; num2str :把非整数数组转换成字符串数组,常用于图形中数据点的标识; 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,a2,a3,7,%清除内存变量 %时间 t 从 0 到 10 每隔 0.

10、01 均匀采样 %对应每一个 t 求 y 值 %求最大值 y_max 及其下标 i_max %生成最大值点的横坐标字符串 %生成最大值点的纵坐标字符串 %三行字符来标识最大值点 %图名称字符串 %新建一个图形窗 %画一条黑色的水平线 %保持图形不被清除 %蓝色实线画曲线 y(t) %大小为 20 的红色圆点标记最大值点 %在最大值点附近显示注释字符 %显示图名 %显示横坐标名 %显示纵坐标名 %取消图形保持,【例33】作出函数y=e-2tsin(3t)的图形,并标注最大值点,clear t = 0 : 0.01 : 10; y = exp( -2*t ) .* sin( 3*t ); y_ma

11、x, 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 ) ; Figure plot( t,zeros( size(t) ), k ) hold on plot( t, y, b ) plot( t(i_max), y_max, r., MarkerSize, 20 ) text( t(i_max)+0.3,

12、y_max+0.05, max_text ) title( Title ); xlabel( t ) ylabel( y ) hold off,8,9,3.1.3 串转换函数和串操作函数,1. 字符串转换函数(详见P76表3.1-1),2. 字符串操作函数(详见P77表3.1-2),length:用来计算字符串的长度(即组成字符的个数)。 char(s1,s2,):将串s1,s2,逐个写成行,形成多行数组。 class或ischar:用来判断某一个变量是否为字符串。class函数返回char则表示为字符串,而ischar函数返回1表示为字符串。,10,strcmp(s1,s2):比较字符串s1

13、和s2是否相同。返回值如果为1则相同,为0则不同。 findstr(s1,s2):寻找在某个长字符串s1中的子字符串s2,返回其起始位置。 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, x2=str1+1 %字符串的数值运算 x2 = 73 102 109 10

14、9 112, char(x1) %将ASCII码转换成字符串形式 ans = Hello, char(x2) ans = Ifmmp,11, 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 = Columns 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 = char ans = double,12,执行字符串 如果需要直接“执行”某一字

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

最新文档


当前位置:首页 > 生活休闲 > 科普知识

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