MATLAB其他数据类型.ppt
《MATLAB其他数据类型.ppt》由会员分享,可在线阅读,更多相关《MATLAB其他数据类型.ppt(98页珍藏版)》请在淘文阁 - 分享文档赚钱的网站上搜索。
1、第第4 4章章 MATLAB MATLAB其他数据类型其他数据类型 4.1 4.1 字符与字符串字符与字符串 4.2 4.2 单元数组单元数组 4.3 4.3 结构型变量结构型变量 4.4 4.4 符号型变量符号型变量 MATLABMATLAB支持的数据类型见下图:支持的数据类型见下图:4.1 4.1 字符与字符串字符与字符串4.1.1 4.1.1 生成字符串生成字符串4.1.2 4.1.2 字符串元素的读取与显示字符串元素的读取与显示4.1.3 4.1.3 字符串的字符串的ASCIIASCII操作操作4.1.4 4.1.4 字符串的运算字符串的运算4.1.5 4.1.5 字符串的执行字符串的
2、执行4.1.1 4.1.1 生成字符串生成字符串字符与字符串运算是各种高级语言不可缺少字符与字符串运算是各种高级语言不可缺少的部分,的部分,MatlabMatlab具有强大的字符处理能力。具有强大的字符处理能力。在在MATLAB7.0MATLAB7.0中的字符串一般是中的字符串一般是ASCIIASCII值的数值的数值数组,它作为字符串表达式进行显示。字符串一值数组,它作为字符串表达式进行显示。字符串一般以行向量的形式存在,并且每一个字符占用两个般以行向量的形式存在,并且每一个字符占用两个字节的内存。字节的内存。字符串是一个字符串是一个 ASCII ASCII 码的字符数组,与普通码的字符数组,
3、与普通数组一样,字符串也可以形成矩阵(表现为一个字数组一样,字符串也可以形成矩阵(表现为一个字符串有多行)。但是,这些行必须有相同数目的列符串有多行)。但是,这些行必须有相同数目的列数。因此,要用数。因此,要用空格空格以使所有行有相同长度。以使所有行有相同长度。q 字符串和字符数组字符串和字符数组n 字符串必须用字符串必须用单引号单引号括起来括起来n 字符串是由多个字符组成的字符串是由多个字符组成的字符行向量字符行向量str1=Matrix Laboratorystr2=M,a,t,r,i,xn 字符数组必须是方的,即每行的字符个数必须相等字符数组必须是方的,即每行的字符个数必须相等str3=
4、M,a,t;r,i,x若需要在字符串内容中包含单引号,则需要在键入若需要在字符串内容中包含单引号,则需要在键入字符串内容时,连续键入两个单引号即可。字符串内容时,连续键入两个单引号即可。使用使用 char 函数函数ASCII 码码 字符串字符串直接赋值直接赋值只需用单引号(只需用单引号()将需设定的字符串引注即可。)将需设定的字符串引注即可。stringname=the content of the stringstr1=Matrixstr2=Laboratorystr=str1,str2str=char(77,97,116,108,97,98)str=char(str1,str2)l 生成一
5、个字符数组,第一行为生成一个字符数组,第一行为 str1,第二行为,第二行为 str2例例4-84-8:字符数组存储方式:字符数组存储方式 a=house;china;tiger a=house;china;tigera=a=househousechinachinatigertiger a a数组保存字符的顺序为:数组保存字符的顺序为:h c t o h i u i g s n e e a rh c t o h i u i g s n e e a r4.1.2 4.1.2 字符串元素的读取与显示字符串元素的读取与显示 由于字符串是数值数组,可按由于字符串是数值数组,可按数组操数组操作作进行读取
6、。用户可以根据需要读取已经进行读取。用户可以根据需要读取已经设定的字符串中的某一个元素或是多个元设定的字符串中的某一个元素或是多个元素。素。字符串的显示有两种方式:直接显示字符串的显示有两种方式:直接显示和利用和利用 disp disp 函数进行显示。函数进行显示。例例4-104-10:读取例:读取例4-84-8中字符数组中字符数组a a的第的第6 6个元素、个元素、a a的第的第1 1个到个到6 6个元素,并使用个元素,并使用dispdisp函数显示函数显示a a的的第第1 1个到个到6 6个元素。个元素。a=house;china;tiger;a=house;china;tiger;a(6
7、)a(6)ans=ans=i i a(1:6)a(1:6)ans=ans=hctohihctohi disp(a(1:6)disp(a(1:6)hctohihctohistr=Matrixdouble(str(3)double(str)q Matlab中字符是以中字符是以 ASCII 码存储的,因而码存储的,因而区分大小写区分大小写,可用,可用 double 函数查看一个字函数查看一个字符的符的 ASCII 码码4.1.3 4.1.3 字符串的字符串的ASCIIASCII操作操作例例4-114-11:求取字符串:求取字符串s=AaBbCc123s=AaBbCc123的的ASCIIASCII码,
8、码,并将其反变换字符串,存储在变量并将其反变换字符串,存储在变量S S中。中。s=AaBbCc123 s=AaBbCc123 doubledouble(s)(s)ans=ans=65 97 66 98 67 99 49 65 97 66 98 67 99 49 50 5150 51 S=S=charchar(ans)(ans)ascii=char(reshape(32:127,32,3)ascii=char(reshape(32:127,32,3)由于由于MATLAB7.0MATLAB7.0语言是用语言是用C C语言开发的,因语言开发的,因此它的字符串操作与此它的字符串操作与C C语言的操作基
9、本相同。常语言的操作基本相同。常用的字符串操作函数如表所示。用的字符串操作函数如表所示。函数名函数名功能功能函数名函数名功能功能strcat链链接字符串接字符串strvcat垂直垂直链链接字符串接字符串strcmp比比较较字符串大小字符串大小strncmp比比较较字符串的前字符串的前n个字符个字符findstr在其他的字符串中在其他的字符串中寻寻找找该该字符串字符串strjust证证明字符数明字符数组组strmatch查查找可能匹配的字符串找可能匹配的字符串strrep用其他字符串代用其他字符串代替替该该串串strtok查查找字符串中的找字符串中的记记号号blanks生成空字符串生成空字符串d
10、eblank删删除字符串内的空格除字符串内的空格ischar字符串字符串检验检验iscellstr字符串的字符串的单单元元检验检验isletter字母字母检验检验isspace空格空格检验检验stringsstrings函数帮助函数帮助4.1.4 4.1.4 字符串的运算字符串的运算 (1 1)判断字符串是否相同)判断字符串是否相同 (2 2)字符串中字符的分类)字符串中字符的分类 (3 3)查找与替换)查找与替换 (4 4)字符串的合并)字符串的合并 (5 5)字符串与数值的转换)字符串与数值的转换 (1 1)判断字符串是否相同)判断字符串是否相同(1/2)n字符串的比较主要为比较两个字符串
11、是否相同,字符字符串的比较主要为比较两个字符串是否相同,字符串中的子串是否相同和字符串中的个别字符是否相同。串中的子串是否相同和字符串中的个别字符是否相同。用于比较字符串的函数主要是用于比较字符串的函数主要是 strcmp 和和 strncmp。strcmp:用于比较两个字符串是否相同。用法为:用于比较两个字符串是否相同。用法为 strcmp(str1,str2),当两个字符串相同时返回,当两个字符串相同时返回1,否则返回,否则返回0。当所比较的两个字符串是单元字符数组时,返回值为一个当所比较的两个字符串是单元字符数组时,返回值为一个列向量,元素为相应行比较的结果。列向量,元素为相应行比较的结
12、果。strncmp:用于比较两个字符串的前面几个字符是否相同。:用于比较两个字符串的前面几个字符是否相同。用法为用法为 strncmp(str1,str2,n),当字符串的前当字符串的前 n 个字符相同个字符相同时返回时返回1,否则返回,否则返回 0。当所比较的两个字符串时单元数组。当所比较的两个字符串时单元数组时,返回值为列向量,元素为相应行比较的结果。时,返回值为列向量,元素为相应行比较的结果。n还可以通过简单运算比较两个字符串。当两个字还可以通过简单运算比较两个字符串。当两个字符串拥有相同的维数时,可以利用符串拥有相同的维数时,可以利用 MATLAB MATLAB 运算运算法则,对字符数
13、组进行比较。字符数组的比较与法则,对字符数组进行比较。字符数组的比较与数值数组的比较基本相同,不同之处在于字符数数值数组的比较基本相同,不同之处在于字符数组比较时进行比较的是字符的组比较时进行比较的是字符的 ASCII ASCII 码值。进码值。进行比较返回的结果为一个数值向量,元素为对应行比较返回的结果为一个数值向量,元素为对应字符比较的结果。需要注意的是在利用这些运算字符比较的结果。需要注意的是在利用这些运算比较字符串时,相互比较的两个字符串必须有相比较字符串时,相互比较的两个字符串必须有相同数目的元素。同数目的元素。符号符号符号意符号意义义英文英文简简写写=等于等于eq=不等于不等于ne
14、大于大于gt=大于等大于等于于ge(1 1)判断字符串是否相同)判断字符串是否相同(2/2)例例4-134-13:调用函数:调用函数strcmpstrcmp和和strncmpstrncmp判断字判断字符串符串word1word1、word2word2是否相等是否相等 word1=what;word1=what;word2=whatever;word2=whatever;N=strcmp(word1,word2)N=strcmp(word1,word2)N=N=0 0 M=strncmp(word1,word2,4)M=strncmp(word1,word2,4)M=M=1 1例例4-144-1
15、4:使用运算比较符来比较字符串:使用运算比较符来比较字符串word1word1、word2word2%注:此时必须满足注:此时必须满足word1word1、word2word2是相同维数的是相同维数的 word1=what ;%word1 word1=what ;%word1后面加了四个空格后面加了四个空格 word2=whatever;word2=whatever;N=(word1=word2)N=(word1=word2)N=N=1 1 1 1 0 0 0 0 1 1 1 1 0 0 0 0 M=(word1 M=(word1 word1=what ;word1=what ;word2=w
16、hatever;word2=whatever;isspace(word1)isspace(word1)ans=ans=0 0 0 0 1 1 1 0 0 0 0 1 1 1 1 1 word2 word2=e e%可以统计可以统计word2word2中含有字符中含有字符e e的个数的个数ans=ans=0 0 0 0 1 0 1 0 0 0 0 1 0 1 0 0(3 3)查找与替换)查找与替换n查找与替换是字符串操作中的一项重要内容。用查找与替换是字符串操作中的一项重要内容。用于查找的函数主要有于查找的函数主要有 findstr findstr,strmatchstrmatch,strrep
17、strrep,strtok strtok 等。等。findstrfindstr:用于在一个字符串中查找子字符串,:用于在一个字符串中查找子字符串,返回子字符串出现的起始位置。用法为返回子字符串出现的起始位置。用法为findstr(str1,str2)findstr(str1,str2),执行时系统首先判断两,执行时系统首先判断两个字符串的长短,然后在长的字符串中检索短个字符串的长短,然后在长的字符串中检索短的子字符串。的子字符串。strrepstrrep:查找字符串中的子字符串并将其替换:查找字符串中的子字符串并将其替换为另一个子字符串。用法为为另一个子字符串。用法为 str=str=strr
18、ep(str1,str2,str3)strrep(str1,str2,str3),将,将 str1 str1 中的所中的所有子字符串有子字符串 str2 str2 替换为替换为 str3 str3。strmatchstrmatch:在字符数组的每一行中查找:在字符数组的每一行中查找是否存在待查找的字符串,存在则返回是否存在待查找的字符串,存在则返回1 1,否则返回,否则返回0 0。用法为。用法为strmatch(str,strmatch(str,STRS)STRS),查找,查找 str str 中以中以 STRS STRS 开头的字开头的字符串。另外可以用符串。另外可以用strmatch(st
19、r,strmatch(str,STRS,exact)STRS,exact),查找精确包含,查找精确包含 STRS STRS 的字符串。的字符串。strtokstrtok:该函数用于选取字符串中的第:该函数用于选取字符串中的第一个部分(一个单词)。该函数的简单一个部分(一个单词)。该函数的简单用法为用法为 strtok(str)strtok(str)。例例4-164-16:演示字符串的查找与替换:演示字符串的查找与替换 s1=This is a good example.;a1=findstr(s1,a)a1=9 18 a1=findstr(s1,good)a1=11 str=strrep(s1
20、,good,great)str=This is a great example.字符串利用字符串利用“”“”运算符进行合并,不过运算符进行合并,不过合并字符串时需要注意以下两点:合并字符串时需要注意以下两点:若使用若使用“,”作为不同字符串之间的间隔,作为不同字符串之间的间隔,则相当于扩展字符串成为更长的字符串向量。则相当于扩展字符串成为更长的字符串向量。若使用若使用“;”作为不同字符串之间的间隔,作为不同字符串之间的间隔,则相当于扩展字符串成为二维或者多维的数组,则相当于扩展字符串成为二维或者多维的数组,这时,不同行上的字符串必须具有这时,不同行上的字符串必须具有同样的长度同样的长度。(4
21、4)字符串的合并)字符串的合并q 水平水平合并合并u 直接使用中括号直接使用中括号u 使用使用 strcat 函数函数 str1=hello,world!str2=strcat(hello,world!)l 使用使用 strcat 时,自动去除时,自动去除原字符串原字符串结尾处结尾处的空格的空格l 水平水平合并合并得到的是一个更长的字符串得到的是一个更长的字符串 q 垂直垂直合并合并u 直接使用中括号直接使用中括号u 使用使用 strvcat 函数函数 str3=Matrix ;Laboratorystr4=strvcat(Matrix,Laboratory)l 在中括号中用在中括号中用分号分
22、号实现垂直实现垂直合并合并,必须保证,必须保证每个字符串每个字符串的的长度相等,否则需用空格补齐长度相等,否则需用空格补齐l 用用 strvcat 合并合并,自动为较短的字符串,自动为较短的字符串补补充充空格空格l 垂直合并垂直合并得到的是一个字符得到的是一个字符数组数组 l 数值矩阵到字符数组:数值矩阵到字符数组:num2str、int2str、mat2strl 字符数组到数值数组:字符数组到数值数组:str2numq 字符串、字符数组与数值数组之间的转换字符串、字符数组与数值数组之间的转换u 按按 ASCII 码转换码转换l 字符数组到数值数组:字符数组到数值数组:doublel 数值数组
23、到字符串:数值数组到字符串:charu 直接将数值数组转换成字符数组直接将数值数组转换成字符数组(4 4)字符串与数值的转换)字符串与数值的转换 函数名函数名功能功能函数名函数名功能功能hex2dec将将16进进制字符串制字符串转转化化为为10进进制制整数整数dec2hex将将10进进制整数制整数转转化化为为16进进制字制字符串符串bin2dec将将2进进制字符串制字符串转转化化为为10进进制制整数整数dec2bin将将10进进制整数制整数转转化化为为2进进制字符制字符串串base2dec转转化化B底字符串底字符串为为10进进制整数制整数hex2num将将16进进制整数制整数转转化化为为双精度
24、数双精度数upper改改该该字符串字符串为为大写大写lower改改该该字符串字符串为为小写小写fprintf把格式化的文本写到文件或把格式化的文本写到文件或显显示屏上示屏上sprintf用格式控制,数字用格式控制,数字转换转换成字符成字符串串sscanf用格式控制,字符串用格式控制,字符串转换转换成数成数字字charASCII转换转换成字符串成字符串num2str数字数字转换转换成字符串成字符串int2str整数整数转换转换成字符串成字符串在在MATLAB7.0MATLAB7.0语言中,还可以使用语言中,还可以使用hex2numhex2num和和hex2dechex2dec等函数实现十进制、十
25、六进制和二进制等函数实现十进制、十六进制和二进制数字之间的转换,如表所示。数字之间的转换,如表所示。例例4-174-17a=97,97.3;97.8,98str1=char(a)str2=num2str(a)str3=int2str(a)str4=mat2str(a)l charchar 的输入参数范围为的输入参数范围为 0,655350,65535,当输入参数,当输入参数中有小数时,直接将小数部分舍去。中有小数时,直接将小数部分舍去。l num2strnum2str 直接将每个数字转换成字符直接将每个数字转换成字符l mat2strmat2str 把整个矩阵转换成字符把整个矩阵转换成字符行向
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- MATLAB 其他 数据类型
限制150内