资源预览内容
第1页 / 共54页
第2页 / 共54页
第3页 / 共54页
第4页 / 共54页
第5页 / 共54页
第6页 / 共54页
第7页 / 共54页
第8页 / 共54页
第9页 / 共54页
第10页 / 共54页
亲,该文档总共54页,到这儿已超出免费预览范围,如果喜欢就下载吧!
资源描述
Matlab工程应用基础 Application of Matlab in Engineering,第四章 字符串单元,电子信息工程教研室,2019/10/16,本章学习目标,掌握字符串数组、复杂字符串数组的创建及串转换函数与串操作函数 掌握元胞数组的创建,元胞数组的显示、寻访、扩充、收缩和重组方法及元胞数组相关函数 掌握构架数组的创建、构架数组的相关函数及构架数组的操作 掌握几种数组的转换,2,第4章 字符串单元,2019/10/16,主要内容,3.1 字符串数组 3.2 元 胞 数 组 3.3 构 架 数 组 3.4 几种数组的转换,3,第4章 字符串单元,2019/10/16,内容简介,字符串数组(Character String Array) 字符串数组的属性和标识 复杂字符串数组的创建 串转换函数和串操作函数 元胞数组 (Cell Array) 元胞数组的创建 元胞数组的内容显示 元胞数组的内容获取 元胞数组的扩充、收缩和重组,构架数组(Structure Array) 构架数组的创建 构架数组数据的获取和设置 构架数组域的获取 数据类型归纳 几种数组的转换 数值数组与字符串数组转换 数值数组与元胞数组的转换 元胞数组与构架数组的转换,4,第4章 字符串单元,2019/10/16,3.1 字符串数组(Character String Array),1. 字符串数组的创建 创建字符串和创建数值是两种不同的数据类型,所以它们的创建方式也是不同; 1.数值变量时通过指令窗口中的数字赋值创建的 2.字符变量是在指令窗口中,先把待建的字符放在“单引号对”中 再按Enter键。 注:单引号必须在英文状态下输入 基本规则 1.所有字符串都用单引号括起来; 2.字符串中的每一个字符都是该字符串变量中的一个元素; 3.字符串中的字符以ASC码形式存储,因而区分大小写,5,第4章 字符串单元,2019/10/16,举例说明,【例31】字符串入门 String1=b; String2=This is an example!; % 英文字母、空格、数字、标点、中文字符 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,6,第4章 字符串单元,2019/10/16,在MATLAB中,字符串是作为字符数组来引入的; 一个字符串由多个字符组成,用单引号()来界定; 字符串是按行向量进行存储的,每一字符(包括空格)是以其ASCII码的形式存放。,7,第4章 字符串单元,2019/10/16,3.1.1 字符串数组的属性和标识,1. 创建串数组 必须将待建字符放在“单引号对”中,当串中本身包含单引号时,每个单引号符用“连续的两个单引号”表示。 2. 串数组的大小 size指令可获得串数组的大小。串中的每一个字符,包括中英文字符、空格、标点都算一个元素。 3. 串数组的元素标识 按从左至右的顺序依次用1、2、3、4等标识元素在串中的位置。,8,第4章 字符串单元,2019/10/16,4. 串数组的ASCII码 指令abs和double可以显示串数组对应的ASCII码数值数组,指令char则可把ASCII码数值数组转换成串数组。 5. 字符串ASCII码数组的操作 可以对ASCII码数组进行数值数组的各种运算。但其结果就变成一般数值向量的运算,而不再是字符串的运算。 注意: 必须在英文状态下输入“单引号对”。 将多个字符串变量直接用“,”连接,可构成一个较长的新字符串变 量。,9,第4章 字符串单元,2019/10/16,【例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 si siht s_2=string(end:-2:1) %倒序排列string且每隔一个字符取 一个元素得到s_2 s_2 = !lmx as it w=string=a&string=z %找出所有小写英文字符,用逻辑数 组表示,10,第4章 字符串单元,2019/10/16,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) STRING = THIS IS AN EXAMPLE! Str=Exm03_2.m,string(5:end) %构造新的字符串Str Str = Exm03_2.m is an example!,11,第4章 字符串单元,2019/10/16,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, *ones(1,11) 补充11个空格 Nice to meet you! s = Hello, Nice to meet you! size(s) ans = 2 17,12,第4章 字符串单元,2019/10/16,2. 利用串操作函数创建多行串数组 利用专门的str2mat、strvcat和char函数可以构造出字符串数组,而不必考虑每行的字符数是否相等,总是按最长的设置,不足的末尾用空格补齐。,13,第4章 字符串单元,2019/10/16, s=char(Hello, Nice to meet you!); s=str2mat(Hello, Nice to meet you!); s=strvcat(Hello, Nice to meet you!); 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,s = Hello, Nice to meet you!,s1 = s2 = Hello, Hello, Nice to meet you! Nice to meet you!,区别: str2mat认为空串代表空行; strvcat省略空串。,14,第4章 字符串单元,2019/10/16,3. 利用串转换函数产生数码字符串 常用的数组/字符串转换函数有int2str , num2str , mat2str 。 int2str:把整数数组转换成字符串数组,非整数将被四舍五入后再转换; num2str :把非整数数组转换成字符串数组,常用于图形中数据点的标识; mat2str:把数值数组转换成字符串数组。,15,第4章 字符串单元,2019/10/16, 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 a = 0.9576 0.8000 2.1510 4.0000 5.0000 7.8000 a1 = 1 1 2 4 5 8 a2 = 0.96 0.8 2.2 4 5 7.8 a3 = 0.96 0.8 2.2;4 5 7.8,16,第4章 字符串单元,2019/10/16,clear t = 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 ) ; 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, y_max+0.05, max_text ) title( Title ); xlabel( t ) ylabel( y ) hold off,%清除内存变量 %时间 t 从 0 到 10 每隔 0.01 均匀采样 %对应每一个 t 求 y 值 %求最大值 y_max 及其下标 i_max %生成最大值点的横坐标字符串 %生成最大值点的纵坐标字符串 %三行字符来标识最大值点 %图名称字符串 %新建一个图形窗 %画一条黑色的水平线 %保持图形不被清除 %蓝色实线画曲线 y(t) %大小为 20 的红色圆点标记最大值点 %在最大值点附近显示注释字符 %显示图名 %显示横坐标名 %显示纵坐标名 %取消图形保持,【例33】作出函数y=e-2tsin(3t)的图形,并标注最大值点,17,第4章 字符串单元,2019/10/16,18,第4章 字符串单元,2019/10/16,3.1.3 串转换函数和串操作函数,1. 字符串转换函数,19,第4章 字符串单元,2019/10/16,2. 字符串操作函数 length:用来计算字符串的长度(即组成字符的个数)。 char(s1,s2,):将串s1,s2,逐个写成行,形
网站客服QQ:2055934822
金锄头文库版权所有
经营许可证:蜀ICP备13022795号 | 川公网安备 51140202000112号