matlab其他数据类型

上传人:san****019 文档编号:71630578 上传时间:2019-01-21 格式:PPT 页数:98 大小:1,017.81KB
返回 下载 相关 举报
matlab其他数据类型_第1页
第1页 / 共98页
matlab其他数据类型_第2页
第2页 / 共98页
matlab其他数据类型_第3页
第3页 / 共98页
matlab其他数据类型_第4页
第4页 / 共98页
matlab其他数据类型_第5页
第5页 / 共98页
点击查看更多>>
资源描述

《matlab其他数据类型》由会员分享,可在线阅读,更多相关《matlab其他数据类型(98页珍藏版)》请在金锄头文库上搜索。

1、第4章 MATLAB其他数据类型,4.1 字符与字符串 4.2 单元数组 4.3 结构型变量 4.4 符号型变量,MATLAB支持的数据类型见下图:,4.1 字符与字符串,4.1.1 生成字符串 4.1.2 字符串元素的读取与显示 4.1.3 字符串的ASCII操作 4.1.4 字符串的运算 4.1.5 字符串的执行,4.1.1 生成字符串 字符与字符串运算是各种高级语言不可缺少的部分,Matlab具有强大的字符处理能力。 在MATLAB7.0中的字符串一般是ASCII值的数值数组,它作为字符串表达式进行显示。字符串一般以行向量的形式存在,并且每一个字符占用两个字节的内存。 字符串是一个 AS

2、CII 码的字符数组,与普通数组一样,字符串也可以形成矩阵(表现为一个字符串有多行)。但是,这些行必须有相同数目的列数。因此,要用空格以使所有行有相同长度。,字符串和字符数组,字符串必须用单引号括起来,字符串是由多个字符组成的字符行向量,str1=Matrix Laboratory,str2=M,a,t,r,i,x,字符数组必须是方的,即每行的字符个数必须相等,str3=M,a,t; r,i,x,若需要在字符串内容中包含单引号,则需要在键入字符串内容时,连续键入两个单引号即可。,使用 char 函数,ASCII 码 字符串,直接赋值 只需用单引号()将需设定的字符串引注即可。 stringna

3、me=the content of the string,str1=Matrix str2=Laboratory str=str1,str2,str=char(77,97,116,108,97,98),str=char(str1,str2),生成一个字符数组,第一行为 str1,第二行为 str2,例4-8:字符数组存储方式 a=house;china;tiger a = house china tiger a数组保存字符的顺序为: h c t o h i u i g s n e e a r,4.1.2 字符串元素的读取与显示 由于字符串是数值数组,可按数组操作进行读取。用户可以根据需要读取已

4、经设定的字符串中的某一个元素或是多个元素。 字符串的显示有两种方式:直接显示和利用 disp 函数进行显示。,例4-10:读取例4-8中字符数组a的第6个元素、a的第1个到6个元素,并使用disp函数显示a的第1个到6个元素。 a=house;china;tiger; a(6) ans = i a(1:6) ans = hctohi disp(a(1:6) hctohi,str=Matrix double(str(3) double(str),Matlab中字符是以 ASCII 码存储的,因而区分大小写,可用 double 函数查看一个字符的 ASCII 码,4.1.3 字符串的ASCII操作

5、 例4-11:求取字符串s=AaBbCc123的ASCII码,并将其反变换字符串,存储在变量S中。 s=AaBbCc123 double(s) ans = 65 97 66 98 67 99 49 50 51 S=char(ans) ascii = char(reshape(32:127,32,3),由于MATLAB7.0语言是用C语言开发的,因此它的字符串操作与C语言的操作基本相同。常用的字符串操作函数如表所示。,4.1.4 字符串的运算 (1)判断字符串是否相同 (2)字符串中字符的分类 (3)查找与替换 (4)字符串的合并 (5)字符串与数值的转换,(1)判断字符串是否相同(1/2),字

6、符串的比较主要为比较两个字符串是否相同,字符串中的子串是否相同和字符串中的个别字符是否相同。用于比较字符串的函数主要是 strcmp 和 strncmp。 strcmp:用于比较两个字符串是否相同。用法为 strcmp(str1,str2),当两个字符串相同时返回1,否则返回0。当所比较的两个字符串是单元字符数组时,返回值为一个列向量,元素为相应行比较的结果。 strncmp:用于比较两个字符串的前面几个字符是否相同。用法为 strncmp(str1,str2,n), 当字符串的前 n 个字符相同时返回1,否则返回 0。当所比较的两个字符串时单元数组时,返回值为列向量,元素为相应行比较的结果。

7、,还可以通过简单运算比较两个字符串。当两个字符串拥有相同的维数时,可以利用 MATLAB 运算法则,对字符数组进行比较。字符数组的比较与数值数组的比较基本相同,不同之处在于字符数组比较时进行比较的是字符的 ASCII 码值。进行比较返回的结果为一个数值向量,元素为对应字符比较的结果。需要注意的是在利用这些运算比较字符串时,相互比较的两个字符串必须有相同数目的元素。,(1)判断字符串是否相同(2/2),例4-13:调用函数strcmp和strncmp判断字符串word1、word2是否相等 word1=what; word2=whatever; N=strcmp(word1,word2) N =

8、 0 M=strncmp(word1,word2,4) M = 1,例4-14:使用运算比较符来比较字符串word1、word2 %注:此时必须满足word1、word2是相同维数的 word1=what ; % word1后面加了四个空格 word2=whatever; N=(word1=word2) N = 1 1 1 1 0 0 0 0 M=(word1=word2) M = 1 1 1 1 1 1 1 1,进行比较返回的结果为一个数值向量,元素为对应字符比较的结果。,(2)字符串中字符的分类 在MATLAB7.0语言中,字符串中的字符通常可以分为空白字符、字母字符和其他类型的字符。 用

9、户可以用以下两个函数对字符串中的字符进行分类。 isspace:用法为 isspace(str),判断字符串 str 中的字符是否为空格,是空格字符则返回1,否则返回0。 isletter:用法为 isletter(str),判断字符串 str 中的字符是否为字母,是字母则返回1,否则返回0。,例4-15:演示字符分类 word1=what ; word2=whatever; isspace(word1) ans = 0 0 0 0 1 1 1 1 word2=e %可以统计word2中含有字符e的个数 ans = 0 0 0 0 1 0 1 0,(3)查找与替换,查找与替换是字符串操作中的一

10、项重要内容。用于查找的函数主要有 findstr,strmatch,strrep,strtok 等。 findstr:用于在一个字符串中查找子字符串,返回子字符串出现的起始位置。用法为findstr(str1,str2),执行时系统首先判断两个字符串的长短,然后在长的字符串中检索短的子字符串。 strrep:查找字符串中的子字符串并将其替换为另一个子字符串。用法为 str = strrep(str1, str2, str3),将 str1 中的所有子字符串 str2 替换为 str3。,strmatch:在字符数组的每一行中查找是否存在待查找的字符串,存在则返回1,否则返回0。用法为strma

11、tch(str, STRS),查找 str 中以 STRS 开头的字符串。另外可以用strmatch(str, STRS,exact),查找精确包含 STRS 的字符串。 strtok:该函数用于选取字符串中的第一个部分(一个单词)。该函数的简单用法为 strtok(str)。,例4-16:演示字符串的查找与替换 s1 = This is a good example.; a1=findstr(s1,a) a1 = 9 18 a1=findstr(s1,good) a1 = 11 str = strrep(s1, good, great) str = This is a great examp

12、le.,字符串利用“ ”运算符进行合并,不过合并字符串时需要注意以下两点: 若使用“,”作为不同字符串之间的间隔,则相当于扩展字符串成为更长的字符串向量。 若使用“;”作为不同字符串之间的间隔,则相当于扩展字符串成为二维或者多维的数组,这时,不同行上的字符串必须具有同样的长度。,(4)字符串的合并,水平合并,直接使用中括号,使用 strcat 函数,str1=hello , world!,str2=strcat(hello ,world!),使用 strcat 时,自动去除原字符串结尾处的空格,水平合并得到的是一个更长的字符串,垂直合并,直接使用中括号,使用 strvcat 函数,str3=M

13、atrix ; Laboratory,str4=strvcat(Matrix,Laboratory),在中括号中用分号实现垂直合并,必须保证每个字符串的长度相等,否则需用空格补齐,用 strvcat 合并,自动为较短的字符串补充空格,垂直合并得到的是一个字符数组,数值矩阵到字符数组: num2str、int2str、mat2str 字符数组到数值数组:str2num,字符串、字符数组与数值数组之间的转换,按 ASCII 码转换,字符数组到数值数组:double,数值数组到字符串:char,直接将数值数组转换成字符数组,(4)字符串与数值的转换,在MATLAB7.0语言中,还可以使用hex2nu

14、m和hex2dec等函数实现十进制、十六进制和二进制数字之间的转换,如表所示。,例4-17,a=97,97.3;97.8,98 str1=char(a) str2=num2str(a) str3=int2str(a) str4=mat2str(a),char 的输入参数范围为 0,65535,当输入参数中有小数时,直接将小数部分舍去。,num2str 直接将每个数字转换成字符,mat2str 把整个矩阵转换成字符行向量,包括矩阵中的方括号、空格 和 分号(逗号自动去除),例4-18,str5=mat2str(97,97.3;97.8,98),数值数组转换为字符数组后,表面上看象一个数值数组,但

15、此时的元素是字符而不是数字!,a=1,2,3 b=num2str(a) c=2*a d=2*b,e=2*str2num(b),4.1.5 字符串的执行,执行字符串所表示的表达式或命令:eval,str=1+2 a=eval(str),eval(string)的作用就是相当于在命令窗里输入string这个命令并执行。 比如 eval(a=rand(2,3) 就相当于在命令窗输入a=rand(2,3)后回车,str=A=magic(3) eval(str),例4-19:用eval执行路径改变命令 cd c: pathname=D:MATLAB701; eval(cd, ,pathname); %执行的功能同cd D:MATLAB701,str1=figure(1); mesh(peaks(60); str2=figure(2); waterfall(peaks(60); eval(str1) eval(str2),4.2 单元数组(元胞数组),4.2.1 单元数组的生成 4.2.2 元胞数组的基本操作 4.2.3 单元数组的显示与获取 4.2.4 单元数组的变维处理,元胞数组是MATLAB的一种特殊数据类型,可以将元胞数组看作无所不包的通用矩阵,或者叫做广义矩阵。组成元胞数组的元素可以是任

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

最新文档


当前位置:首页 > 高等教育 > 大学课件

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