MATLAB其他数据类型_第1页
MATLAB其他数据类型_第2页
MATLAB其他数据类型_第3页
MATLAB其他数据类型_第4页
MATLAB其他数据类型_第5页
已阅读5页,还剩92页未读 继续免费阅读

下载本文档

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

1、MATLAB其他数据类型 第第4 4章章 MATLABMATLAB其他数据类型其他数据类型 4.1 4.1 字符与字符串字符与字符串 4.2 4.2 单元数组单元数组 4.3 4.3 结构型变量结构型变量 4.4 4.4 符号型变量符号型变量 MATLAB其他数据类型 MATLABMATLAB支持的数据类型见下图:支持的数据类型见下图: MATLAB其他数据类型 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

2、.4 4.1.4 字符串的运算字符串的运算 4.1.5 4.1.5 字符串的执行字符串的执行 MATLAB其他数据类型 4.1.1 4.1.1 生成字符串生成字符串 字符与字符串运算是各种高级语言不可缺少字符与字符串运算是各种高级语言不可缺少 的部分,的部分,MatlabMatlab具有强大的字符处理能力。具有强大的字符处理能力。 在在MATLAB7.0MATLAB7.0中的字符串一般是中的字符串一般是ASCIIASCII值的数值的数 值数组,它作为字符串表达式进行显示。字符串一值数组,它作为字符串表达式进行显示。字符串一 般以行向量的形式存在,并且每一个字符占用两个般以行向量的形式存在,并且

3、每一个字符占用两个 字节的内存。字节的内存。 字符串是一个字符串是一个 ASCII ASCII 码的字符数组,与普通码的字符数组,与普通 数组一样,字符串也可以形成矩阵(表现为一个字数组一样,字符串也可以形成矩阵(表现为一个字 符串有多行)。但是,这些行必须有相同数目的列符串有多行)。但是,这些行必须有相同数目的列 数。因此,要用空格以使所有行有相同长度。数。因此,要用空格以使所有行有相同长度。 MATLAB其他数据类型 q 字符串和字符数组字符串和字符数组 n 字符串必须用单引号括起来字符串必须用单引号括起来 n 字符串是由多个字符组成的字符行向量字符串是由多个字符组成的字符行向量 str1

4、=Matrix Laboratory str2=M,a,t,r,i,x n 字符数组必须是方的,即每行的字符个数必须相等字符数组必须是方的,即每行的字符个数必须相等 str3=M,a,t; r,i,x 若需要在字符串内容中包含单引号,则需要在键入若需要在字符串内容中包含单引号,则需要在键入 字符串内容时,连续键入两个单引号即可。字符串内容时,连续键入两个单引号即可。 MATLAB其他数据类型 使用使用 char 函数函数 ASCII 码码 字符串字符串 直接赋值直接赋值 只需用单引号(只需用单引号()将需设定的字符串引注即可。)将需设定的字符串引注即可。 stringname=the cont

5、ent of the string str1=Matrix str2=Laboratory str=str1,str2 str=char(77,97,116,108,97,98) str=char(str1,str2) l 生成一个字符数组,第一行为生成一个字符数组,第一行为 str1,第二行为,第二行为 str2 MATLAB其他数据类型 例例4-84-8:字符数组存储方式:字符数组存储方式 a=house;china;tiger a=house;china;tiger a =a = househouse chinachina tigertiger a a数组保存字符的顺序为:数组保存字符的

6、顺序为: 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 r MATLAB其他数据类型 4.1.2 4.1.2 字符串元素的读取与显示字符串元素的读取与显示 由于字符串是数值数组,可按数组操由于字符串是数值数组,可按数组操 作进行读取。用户可以根据需要读取已经作进行读取。用户可以根据需要读取已经 设定的字符串中的某一个元素或是多个元设定的字符串中的某一个元素或是多个元 素。素。 字符串的显示有两种方式:直接显示字符串的显示有两种方式:直接显示 和利用和利用 disp disp 函数进行显示。函数进行显示。 MATLAB其他数据类

7、型 例例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) a(6) ans =ans = i i a(1:6) a(1:6) ans =ans = hctohihctohi disp(a(1:6) disp(a(1:6) hctohihctohi MATLAB其他数据类型 str=Matrix doubl

8、e(str(3) double(str) q Matlab中字符是以中字符是以 ASCII 码存储的,因而码存储的,因而 区分大小写区分大小写,可用,可用 double 函数查看一个字函数查看一个字 符的符的 ASCII 码码 MATLAB其他数据类型 4.1.3 4.1.3 字符串的字符串的ASCIIASCII操作操作 例例4-114-11:求取字符串:求取字符串s=AaBbCc123s=AaBbCc123的的ASCIIASCII码,码, 并将其反变换字符串,存储在变量并将其反变换字符串,存储在变量S S中。中。 s=AaBbCc123 s=AaBbCc123 double(s) doubl

9、e(s) ans =ans = 65 97 66 98 67 99 49 65 97 66 98 67 99 49 50 5150 51 S=char(ans) S=char(ans) ascii = char(reshape(32:127,32,3)ascii = char(reshape(32:127,32,3) MATLAB其他数据类型 由于由于MATLAB7.0MATLAB7.0语言是用语言是用C C语言开发的,因语言开发的,因 此它的字符串操作与此它的字符串操作与C C语言的操作基本相同。常语言的操作基本相同。常 用的字符串操作函数如表所示。用的字符串操作函数如表所示。 函数名函数名

10、功能功能函数名函数名功能功能 strcat链接字符串链接字符串strvcat垂直链接字符串垂直链接字符串 strcmp比较字符串大小比较字符串大小strncmp比较字符串的前比较字符串的前 n个字符个字符 findstr在其他的字符串中寻找该字符串在其他的字符串中寻找该字符串strjust证明字符数组证明字符数组 strmatch查找可能匹配的字符串查找可能匹配的字符串strrep用其他字符串代用其他字符串代 替该串替该串 strtok查找字符串中的记号查找字符串中的记号blanks生成空字符串生成空字符串 deblank删除字符串内的空格删除字符串内的空格ischar字符串检验字符串检验 i

11、scellstr字符串的单元检验字符串的单元检验isletter字母检验字母检验 isspace空格检验空格检验stringsstrings函数帮助函数帮助 MATLAB其他数据类型 4.1.4 4.1.4 字符串的运算字符串的运算 (1 1)判断字符串是否相同)判断字符串是否相同 (2 2)字符串中字符的分类)字符串中字符的分类 (3 3)查找与替换)查找与替换 (4 4)字符串的合并)字符串的合并 (5 5)字符串与数值的转换)字符串与数值的转换 MATLAB其他数据类型 (1 1)判断字符串是否相同)判断字符串是否相同(1/2) n字符串的比较主要为比较两个字符串是否相同,字符字符串的比

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

13、cmp:用于比较两个字符串的前面几个字符是否相同。:用于比较两个字符串的前面几个字符是否相同。 用法为用法为 strncmp(str1,str2,n), 当字符串的前当字符串的前 n 个字符相同个字符相同 时返回时返回1,否则返回,否则返回 0。当所比较的两个字符串时单元数组。当所比较的两个字符串时单元数组 时,返回值为列向量,元素为相应行比较的结果。时,返回值为列向量,元素为相应行比较的结果。 MATLAB其他数据类型 n还可以通过简单运算比较两个字符串。当两个字还可以通过简单运算比较两个字符串。当两个字 符串拥有相同的维数时,可以利用符串拥有相同的维数时,可以利用 MATLAB MATLA

14、B 运算运算 法则,对字符数组进行比较。字符数组的比较与法则,对字符数组进行比较。字符数组的比较与 数值数组的比较基本相同,不同之处在于字符数数值数组的比较基本相同,不同之处在于字符数 组比较时进行比较的是字符的组比较时进行比较的是字符的 ASCII ASCII 码值。进码值。进 行比较返回的结果为一个数值向量,元素为对应行比较返回的结果为一个数值向量,元素为对应 字符比较的结果。需要注意的是在利用这些运算字符比较的结果。需要注意的是在利用这些运算 比较字符串时,相互比较的两个字符串必须有相比较字符串时,相互比较的两个字符串必须有相 同数目的元素。同数目的元素。 符号符号 符号意符号意 义义

15、英文简写英文简写 =等于等于eq =不等于不等于ne 大于大于gt = 大于等大于等 于于 ge (1 1)判断字符串是否相同)判断字符串是否相同(2/2) MATLAB其他数据类型 例例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=strncm

16、p(word1,word2,4) M=strncmp(word1,word2,4) M =M = 1 1 MATLAB其他数据类型 例例4-144-14:使用运算比较符来比较字符串:使用运算比较符来比较字符串word1word1、word2word2 % %注:此时必须满足注:此时必须满足word1word1、word2word2是相同维数的是相同维数的 word1=what ; % word1 word1=what ; % word1后面加了四个空格后面加了四个空格 word2=whatever; word2=whatever; N=(word1=word2) N=(word1=word2)

17、 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=whatever; 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=e word2=e % %可以统计可以统计word2word2中含有字符中含有字符e e的个数的个数 ans =ans = 0 0 0 0 1 0 1 0 0 0 0 1 0 1 0 0 MATLAB其他数据类

18、型 (3 3)查找与替换)查找与替换 n查找与替换是字符串操作中的一项重要内容。用查找与替换是字符串操作中的一项重要内容。用 于查找的函数主要有于查找的函数主要有 findstrfindstr,strmatchstrmatch, strrepstrrep,strtok strtok 等。等。 findstrfindstr:用于在一个字符串中查找子字符串,:用于在一个字符串中查找子字符串, 返回子字符串出现的起始位置。用法为返回子字符串出现的起始位置。用法为 findstr(str1,str2)findstr(str1,str2),执行时系统首先判断两,执行时系统首先判断两 个字符串的长短,然后

19、在长的字符串中检索短个字符串的长短,然后在长的字符串中检索短 的子字符串。的子字符串。 strrepstrrep:查找字符串中的子字符串并将其替换:查找字符串中的子字符串并将其替换 为另一个子字符串。用法为为另一个子字符串。用法为 str = str = strrep(str1, str2, str3)strrep(str1, str2, str3),将,将 str1 str1 中的所中的所 有子字符串有子字符串 str2 str2 替换为替换为 str3str3。 MATLAB其他数据类型 strmatchstrmatch:在字符数组的每一行中查找:在字符数组的每一行中查找 是否存在待查找的

20、字符串,存在则返回是否存在待查找的字符串,存在则返回1 1, 否则返回否则返回0 0。用法为。用法为strmatch(str, strmatch(str, STRS)STRS),查找,查找 str str 中以中以 STRS STRS 开头的字开头的字 符串。另外可以用符串。另外可以用strmatch(str, strmatch(str, STRS,exact)STRS,exact),查找精确包含,查找精确包含 STRS STRS 的字符串。的字符串。 strtokstrtok:该函数用于选取字符串中的第:该函数用于选取字符串中的第 一个部分(一个单词)。该函数的简单一个部分(一个单词)。该函

21、数的简单 用法为用法为 strtok(str)strtok(str)。 MATLAB其他数据类型 例例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, good, great) str = This is a great example. MATLAB其他数据类型 字符串利用字符串利用“ ” ”运算符进行合并,不运算符进行合并,不 过合并字符串时需要注意以下两点:过合并字符串时

22、需要注意以下两点: 若使用若使用“,”作为不同字符串之间的间隔,作为不同字符串之间的间隔, 则相当于扩展字符串成为更长的字符串向量。则相当于扩展字符串成为更长的字符串向量。 若使用若使用“;”作为不同字符串之间的间隔,作为不同字符串之间的间隔, 则相当于扩展字符串成为二维或者多维的数组,则相当于扩展字符串成为二维或者多维的数组, 这时,不同行上的字符串必须具有同样的长度。这时,不同行上的字符串必须具有同样的长度。 (4 4)字符串的合并)字符串的合并 MATLAB其他数据类型 q 水平水平合并合并 u 直接使用中括号直接使用中括号 u 使用使用 strcat 函数函数 str1=hello ,

23、 world! str2=strcat(hello ,world!) l 使用使用 strcat 时,自动去除时,自动去除原字符串原字符串结尾结尾 处的空格处的空格 l 水平水平合并合并得到的是一个更长的字符串得到的是一个更长的字符串 MATLAB其他数据类型 q 垂直垂直合并合并 u 直接使用中括号直接使用中括号 u 使用使用 strvcat 函数函数 str3=Matrix ; Laboratory str4=strvcat(Matrix,Laboratory) l 在中括号中用在中括号中用分号分号实现垂直实现垂直合并合并,必须保证,必须保证 每个字符串每个字符串的的长度相等,否则需用空格

24、补齐长度相等,否则需用空格补齐 l 用用 strvcat 合并合并,自动为较短的字符串,自动为较短的字符串补补 充充空格空格 l 垂直合并垂直合并得到的是一个字符得到的是一个字符数组数组 MATLAB其他数据类型 MATLAB其他数据类型 MATLAB其他数据类型 l 数值矩阵到字符数组:数值矩阵到字符数组: num2str、int2str、mat2str l 字符数组到数值数组:字符数组到数值数组:str2num q 字符串、字符数组与数值数组之间的转换字符串、字符数组与数值数组之间的转换 u 按按 ASCII 码转换码转换 l 字符数组到数值数组:字符数组到数值数组:double l 数值

25、数组到字符串:数值数组到字符串:char u 直接将数值数组转换成字符数组直接将数值数组转换成字符数组 (4 4)字符串与数值的转换)字符串与数值的转换 MATLAB其他数据类型 函数名函数名功能功能函数名函数名功能功能 hex2dec将将16进制字符串转化为进制字符串转化为10进制进制 整数整数 dec2hex将将10进制整数转化为进制整数转化为16进制字进制字 符串符串 bin2dec将将2进制字符串转化为进制字符串转化为10进制进制 整数整数 dec2bin将将10进制整数转化为进制整数转化为2进制字进制字 符串符串 base2de c 转化转化B底字符串为底字符串为10进制整数进制整数

26、hex2nu m 将将16进制整数转化为双精度数进制整数转化为双精度数 upper改该字符串为大写改该字符串为大写lower改该字符串为小写改该字符串为小写 fprintf把格式化的文本写到文件或显把格式化的文本写到文件或显 示屏上示屏上 sprintf用格式控制,数字转换成字符用格式控制,数字转换成字符 串串 sscanf用格式控制,字符串转换成数用格式控制,字符串转换成数 字字 charASCII转换成字符串转换成字符串 num2str数字转换成字符串数字转换成字符串int2str整数转换成字符串整数转换成字符串 在在MATLAB7.0MATLAB7.0语言中,还可以使用语言中,还可以使用

27、hex2numhex2num和和 hex2dechex2dec等函数实现十进制、十六进制和二进制等函数实现十进制、十六进制和二进制 数字之间的转换,如表所示。数字之间的转换,如表所示。 MATLAB其他数据类型 例例4-174-17 a=97,97.3;97.8,98 str1=char(a) str2=num2str(a) str3=int2str(a) str4=mat2str(a) l charchar 的输入参数范围为的输入参数范围为 0,655350,65535,当输入参数,当输入参数 中有小数时,直接将小数部分舍去。中有小数时,直接将小数部分舍去。 l num2strnum2str

28、 直接将每个数字转换成字符直接将每个数字转换成字符 l mat2strmat2str 把整个矩阵转换成字符把整个矩阵转换成字符行向量行向量,包括矩,包括矩 阵中的阵中的方括号方括号、空格空格 和和 分号分号(逗号自动去除)(逗号自动去除) MATLAB其他数据类型 例例4-184-18 str5=mat2str(97,97.3;97.8,98) l 数值数组转换为字符数组后,表面上看数值数组转换为字符数组后,表面上看象一个数象一个数 值数组值数组,但此时的元素是字符而不是数字!,但此时的元素是字符而不是数字! a=1,2,3 b=num2str(a) c=2*a d=2*b e=2*str2n

29、um(b) MATLAB其他数据类型 4.1.5 4.1.5 字符串的执行字符串的执行 q 执行字符串所表示的表达式或命令:执行字符串所表示的表达式或命令:eval str=1+2 a=eval(str) eval(string)eval(string)的作用就是相当于在命令窗里输入的作用就是相当于在命令窗里输入 stringstring这个命令并执行。这个命令并执行。 比如比如 eval(a=rand(2,3)eval(a=rand(2,3) 就相当于在命令窗输入就相当于在命令窗输入a=rand(2,3)a=rand(2,3)后回车后回车 str=A=magic(3) eval(str) M

30、ATLAB其他数据类型 例例4-194-19:用:用evaleval执行路径改变命令执行路径改变命令 cd c: cd c: pathname=D:MATLAB701; pathname=D:MATLAB701; eval(cd, ,pathname); eval(cd, ,pathname); % %执行的功能同执行的功能同cd D:MATLAB701cd D:MATLAB701 str1=figure(1); mesh(peaks(60); str2=figure(2); waterfall(peaks(60); eval(str1) eval(str2) MATLAB其他数据类型 4.2

31、 4.2 单元数组单元数组( (元胞数组)元胞数组) 4.2.1 4.2.1 单元数组的生成单元数组的生成 .2元胞数组的基本操作元胞数组的基本操作 4.2.3 4.2.3 单元数组的显示与获取单元数组的显示与获取 4.2.4 4.2.4 单元数组的变维处理单元数组的变维处理 MATLAB其他数据类型 元胞数组是元胞数组是MATLABMATLAB的一种特殊数据类型,可以将的一种特殊数据类型,可以将 元胞数组看作无所不包的通用矩阵,或者叫做广义矩元胞数组看作无所不包的通用矩阵,或者叫做广义矩 阵。组成元胞数组的元素可以是任何一种数据类型的阵。组成元胞数组的元素可以是任何一种数据类

32、型的 常数或者变量,每一个元素也可以具有不同的尺寸和常数或者变量,每一个元素也可以具有不同的尺寸和 内存占用空间,每一个元素的内容也可以完全不同,内存占用空间,每一个元素的内容也可以完全不同, 所以元胞数组的元素叫作元胞(所以元胞数组的元素叫作元胞(cellcell)。和一般的数)。和一般的数 值矩阵一样,元胞数组的内存空间也是动态分配的。值矩阵一样,元胞数组的内存空间也是动态分配的。 与数值数组相同,元组数组的维数不受限制,元与数值数组相同,元组数组的维数不受限制,元 胞数组可以是一维的、二维的,甚至也可以是多维的。胞数组可以是一维的、二维的,甚至也可以是多维的。 访问元胞数组的元素可以使用

33、单下标方式或者全下标访问元胞数组的元素可以使用单下标方式或者全下标 方式。方式。 MATLAB其他数据类型 .1元胞数组的创建元胞数组的创建 组成元胞数组的内容可以是任意类型的数组成元胞数组的内容可以是任意类型的数 据,所以创建元胞数组之前需要创建相应的数据,所以创建元胞数组之前需要创建相应的数 据。据。 1、 用赋值语句直接定义用赋值语句直接定义 A=1 2; 3 4; str=Matlab; M=1:4, A, str; celldisp(M) q 可以通过以下两种方式定义一个元胞变量可以通过以下两种方式定义一个元胞变量 MATLAB其他数据类型 MATLAB其他数据类型

34、MATLAB其他数据类型 MATLAB其他数据类型 创建元胞数组需要使用运算符花括号,例如创建元胞数组需要使用运算符花括号,例如 在创建数组在创建数组A A时,使用花括号将不同类型和尺寸的数据时,使用花括号将不同类型和尺寸的数据 组合在一起构成了元胞数组,在这个数组中有标量、组合在一起构成了元胞数组,在这个数组中有标量、 多维数组、向量和字符串。多维数组、向量和字符串。 注意创建注意创建B B时使用了不同的方法,该方法是将数组时使用了不同的方法,该方法是将数组 的每一个元素都使用花括号括起来,然后再用数组创的每一个元素都使用花括号括起来,然后再用数组创 建的符号方括号建的符号方括号将数组的元素

35、括起来。将数组的元素括起来。 还有一种创建元胞数组的方法,如创建数组还有一种创建元胞数组的方法,如创建数组C C时所时所 用的方法,用的方法,MATLABMATLAB自动扩展数组的尺寸,没有被明确自动扩展数组的尺寸,没有被明确 赋值的元素作为空元胞数组存在。赋值的元素作为空元胞数组存在。 MATLAB其他数据类型 一般说来,构成元胞数组的数据类型可一般说来,构成元胞数组的数据类型可 以是字符串、双精度数、元胞数组、结构或以是字符串、双精度数、元胞数组、结构或 其他其他MATLABMATLAB数据类型。每一个元胞数据也可数据类型。每一个元胞数据也可 以为标量、向量、矩阵、以为标量、向量、矩阵、N

36、 N维数组。维数组。 2、用、用 cell 函数预先分配存储空间,然后对函数预先分配存储空间,然后对 元胞的每个元素逐个赋值。元胞的每个元素逐个赋值。 cell(m,n) l 生成一个生成一个 m 行行 n 列列 的元胞数组。的元胞数组。 MATLAB其他数据类型 MATLAB其他数据类型 cellcell函数的作用是用来创建空元胞数组,可以创建一函数的作用是用来创建空元胞数组,可以创建一 维、二维或多维数组,但是创建的数组都为空元胞。注维、二维或多维数组,但是创建的数组都为空元胞。注 意区别空数组意区别空数组00个字节个字节 和空元胞之间和空元胞之间44个字节个字节 占用内占用内 存的区别。

37、存的区别。 MATLAB其他数据类型 .2元胞数组的基本操作元胞数组的基本操作 主要包括对元胞数组元胞和元胞数据的访主要包括对元胞数组元胞和元胞数据的访 问、修改,元胞数组的扩展,收缩或者重组。问、修改,元胞数组的扩展,收缩或者重组。 与操作一般的数值数组相类似,操作数值数组与操作一般的数值数组相类似,操作数值数组 的函数也可以应用在元胞数组上。例如:的函数也可以应用在元胞数组上。例如: MATLAB其他数据类型 这里使用圆括号直接访问元胞数组的元胞。获取的数这里使用圆括号直接访问元胞数组的元胞。获取的数 据也是一个元胞数组。据也是一个元胞数组。 MATLAB其他数据类型 例:

38、元胞元素的访问。例:元胞元素的访问。 MATLAB其他数据类型 使用花括号可以直接获取元胞数组的元胞内容。使用花括号可以直接获取元胞数组的元胞内容。 MATLAB其他数据类型 例例4-204-20:使用:使用cellcell函数生成元胞数组函数生成元胞数组 A=cell(2,2) A=cell(2,2) A = A = A1,1=1 A1,1=1 A = A = 1 1 A1,2=wang A1,2=wang A = A = 1 wang 1 wang MATLAB其他数据类型 4.2.3 4.2.3 元胞数组的显示与获取元胞数组的显示与获取 A=1 2; 3 4; str=Matlab; M

39、=1:4, A, str N=hello, M; eye(2),magic(3) N1,1 N1,2 N1,21,2 N1,21,2(2,1) l元元胞变量的引用必须使用大括号。 MATLAB其他数据类型 相关函数相关函数 celldisp l 输出元胞变量的内容。输出元胞变量的内容。 cellplot l 用图形方式显示元胞变量的内容。用图形方式显示元胞变量的内容。 iscell l 判别一个变量是否为元胞变量。判别一个变量是否为元胞变量。 MATLAB其他数据类型 例 A=1 2; 3 4; str=Matlab; M=1:4, A, str; celldisp(M) cellplot(M

40、) iscell(A) iscell(M) celldisp celldisp 函数用于显示单元数组的全部内容,函数用于显示单元数组的全部内容, 有时候只需要显示单元数组的一个单元,可以用有时候只需要显示单元数组的一个单元,可以用 花括号对单元进行索引。花括号对单元进行索引。 MATLAB其他数据类型 例例4-214-21:使用:使用celldispcelldisp函数显示元胞数组内容函数显示元胞数组内容 A=1,wang,1+3i,1 2;3 4;A=1,wang,1+3i,1 2;3 4; celldisp(A) celldisp(A) A1 =A1 = 1 1 A2 =A2 = wang

41、 wang A3 =A3 = 1.0000 + 3.0000i 1.0000 + 3.0000i A4 =A4 = 1 2 1 2 3 4 3 4 MATLAB其他数据类型 例例4-224-22:使用花括号获取元胞数组的内容:使用花括号获取元胞数组的内容 A=1,wang,1+3i,1 2;3 4; A=1,wang,1+3i,1 2;3 4; A1 A1 ans =ans = 1 1 A4 A4 A(4)A(4)其类型为其类型为cellcell型,而型,而A4A4类型为其应属的类型类型为其应属的类型 ans =ans = 1 2 1 2 3 4 3 4 MATLAB其他数据类型 4.2.44

42、.2.4元胞数组的变维处理元胞数组的变维处理 改变数组的维数可以通过添加或删除数组改变数组的维数可以通过添加或删除数组 元素完成。删除数组元素时,采用的索引方式元素完成。删除数组元素时,采用的索引方式 为一维下标,格式为:为一维下标,格式为: A(cell_subscripts) = A(cell_subscripts) = 。 得到的元胞数组为原数组中剩下元素排列得到的元胞数组为原数组中剩下元素排列 而成,为一维数组。添加数组元素时,自而成,为一维数组。添加数组元素时,自 动添加该数组所对应的行和列,其他元素动添加该数组所对应的行和列,其他元素 为空。为空。 另外可以通过函数另外可以通过函数

43、 reshape reshape 改变数组的改变数组的 形状。形状。reshape reshape 函数按照顺序将原元胞数组的函数按照顺序将原元胞数组的 元素进行重新放置,得到新的元胞数组元素个元素进行重新放置,得到新的元胞数组元素个 数与原数组相同。数与原数组相同。 MATLAB其他数据类型 例例4-234-23:添加或删除单元数组的单元:添加或删除单元数组的单元 A=1,wang,1+3i,1 2;3 4; A=1,wang,1+3i,1 2;3 4; B=5 6;7 8,li,zhang,1 2 3;4 5 6; B=5 6;7 8,li,zhang,1 2 3;4 5 6; C=A,B

44、 C=A,B D=A;B D=A;B F=D F=D whos C D whos C D E=D(1,:) E=D(1,:) D2= D2= D(4)= D(4)= F(2,:)= F(2,:)= F(2,5)= energy F(2,5)= energy MATLAB其他数据类型 例例4-244-24:使用:使用reshapereshape函数改变单元数组的结构函数改变单元数组的结构 A=1,wang,1+3i,1 2;3 4; A=1,wang,1+3i,1 2;3 4; B=reshape(A,2,2) B=reshape(A,2,2) B = B = 1 1.0000+ 3.0000i

45、 1 1.0000+ 3.0000i wang 2x2 double wang 2x2 double whos A B whos A B 在在MATLAB7.0MATLAB7.0语言中,与单元数组相关的操语言中,与单元数组相关的操 作还有作还有iscelliscell、cellfuncellfun和和num2cellnum2cell等函数,大等函数,大 家可以参考家可以参考MATLAB7.0MATLAB7.0的的HelpHelp做进一步了解。做进一步了解。 MATLAB其他数据类型 4.3 4.3 结构型变量结构型变量 4.3.1 4.3.1 结构型变量的生成结构型变量的生成 4.3.2 4.

46、3.2 结构型变量的操作结构型变量的操作 和和C C语言类似,语言类似,MATLABMATLAB也具有结构类型也具有结构类型 的数据。结构(的数据。结构(structstruct)是包含一组记录的)是包含一组记录的 数据类型,而记录,则存储在相应的字段中。数据类型,而记录,则存储在相应的字段中。 结构的字段可以是任意一种结构的字段可以是任意一种MATLABMATLAB数据类型数据类型 的变量或者对象。的变量或者对象。 MATLAB其他数据类型 4.3.1 4.3.1 结构型变量的生成结构型变量的生成 可以使用两种方法生成结构型变量,一种可以使用两种方法生成结构型变量,一种 是在命令窗口中直接输

47、入,还有一种是使用是在命令窗口中直接输入,还有一种是使用 structstruct函数。函数。 n通过直接输入结构体各元素值的方法可以创建通过直接输入结构体各元素值的方法可以创建 一个结构体。输入的同时定义该元素的名称,一个结构体。输入的同时定义该元素的名称, 并使用并使用“.”.”将变量名与元素名连接。将变量名与元素名连接。 nstruct struct 函数的最基本的使用方式是函数的最基本的使用方式是 struct_name=struct(field1,V1,field2,struct_name=struct(field1,V1,field2, V2,.)V2,.),其中,其中 field

48、n fieldn 是各成员变量名,是各成员变量名,VnVn 为对应的各成员变量的内容。为对应的各成员变量的内容。 MATLAB其他数据类型 例例4-254-25:用直接输入法生成结构型变量:用直接输入法生成结构型变量 student.score=90 95 89 100 99; student.score=90 95 89 100 99; =Li Ning; =Li Ning; student.weight=69; student.weight=69; student.height=178; student.height=178; student

49、.number=200708008; student.number=200708008; student student whos student whos student MATLAB其他数据类型 例例4-264-26:使用:使用structstruct函数生成结构型变量函数生成结构型变量 s = struct(field1, , field2, , .) s = struct(field1, , field2, , .) creates an empty structure with fields creates an empty structure with fields field1,

50、 field2, .field1, field2, . student=struct(number,200708008, student=struct(number,200708008, 200709009,name,Li Ning,Ma Lin)200709009,name,Li Ning,Ma Lin) student(2).name student(2).name MATLAB其他数据类型 4.3.2 4.3.2 结构型变量的操作结构型变量的操作 对于结构的基本操作其实就是对结构型变对于结构的基本操作其实就是对结构型变 量元素包含的记录的操作。主要有结构量元素包含的记录的操作。主要有结构

51、 记录数据的访问,字段的增加和删除等。记录数据的访问,字段的增加和删除等。 访问结构数组元素包含的记录的方法访问结构数组元素包含的记录的方法 很简单,直接使用结构数组的名称和字很简单,直接使用结构数组的名称和字 段的名称以及操作符段的名称以及操作符“.”.”完成相应的操完成相应的操 作。作。 MATLAB其他数据类型 MATLAB其他数据类型 MATLAB其他数据类型 添加成员变量添加成员变量 n如果需要向结构体中添加新的成员,可以如果需要向结构体中添加新的成员,可以 直接输入该变量的名称并赋值。直接输入该变量的名称并赋值。 MATLAB其他数据类型 例例4-274-27:在结构型变量中添加成

52、员变量:在结构型变量中添加成员变量 student=struct(number,200708008, student=struct(number,200708008, 200709009,name,Li Ning,Ma 200709009,name,Li Ning,Ma Lin);Lin); student(1).gender=Male; student(1).gender=Male; student(1).age=21; student(1).age=21; student(2).gender=Male; student(2).gender=Male; student(2).age=22;

53、student(2).age=22; student student MATLAB其他数据类型 删除成员变量删除成员变量 n在在 MATLAB MATLAB 中可以使用函数中可以使用函数 rmfield rmfield 从结从结 构体中删除成员变量。命令构体中删除成员变量。命令 S=rmfield(S,field) S=rmfield(S,field) 将删除结构体将删除结构体 S S 中的成员中的成员 fieldfield,同时保留,同时保留 S S 原有的结构。原有的结构。 n可以使用命令可以使用命令 S=rmfield(S,fields) S=rmfield(S,fields) 一次一次

54、 删除多个成员,其中删除多个成员,其中 fields fields 为字符行变为字符行变 量或者元胞型变量。该命令删除量或者元胞型变量。该命令删除 fields fields 中指定的成员。中指定的成员。 MATLAB其他数据类型 例例4-284-28: 在结构型变量中删除成员变量在结构型变量中删除成员变量 s = rmfield(s,field) removes the specified field from the structure array s. student=struct(number,200708008, student=struct(number,200708008, 20

55、0709009,name,Li Ning,Ma Lin);200709009,name,Li Ning,Ma Lin); student=rmfield(student,name) student=rmfield(student,name) student = student = 1x2 struct array with fields:1x2 struct array with fields: number number MATLAB其他数据类型 在在MATLAB7.0MATLAB7.0中,中,getfieldgetfield和和setfieldsetfield 函数也是有关结构型变量的函数

56、。函数也是有关结构型变量的函数。 getfieldgetfield函数获取当前存储在某个成员变量函数获取当前存储在某个成员变量 中的值。中的值。 setfieldsetfield函数给某个成员的变量插入新的值,函数给某个成员的变量插入新的值, 其作用与其作用与“结构型变量名结构型变量名.filed.filed新值新值” 等价。等价。 例例4-294-29: getfieldgetfield和和setfieldsetfield函数的使用函数的使用 MATLAB其他数据类型 student=struct(number,200708008,2student=struct(number,2007080

57、08,2 00709009,name,Li Ning,Ma Lin);00709009,name,Li Ning,Ma Lin); GETF=getfield(student(2) ,number)GETF=getfield(student(2) ,number) SETF=setfield(student(2) ,number,2SETF=setfield(student(2) ,number,2 0120752)0120752) 例例4-294-29: getfieldgetfield和和setfieldsetfield函数的使用函数的使用 MATLAB其他数据类型 4.4 4.4 符号型

58、变量符号型变量 4.4.1 4.4.1 符号变量、符号表达式和符号方程符号变量、符号表达式和符号方程 的生成的生成( (独立变量独立变量) ) 4.4.2 4.4.2 符号表达式的操作符号表达式的操作 4.4.3 4.4.3 符号函数画图符号函数画图 MATLAB其他数据类型 4.4.1 4.4.1 符号变量、符号表达式和符号方程的生符号变量、符号表达式和符号方程的生 成成 符号变量要先定义,后引用。可以用符号变量要先定义,后引用。可以用symsym 函数、函数、symssyms函数将运算量定义为符号型数据。函数将运算量定义为符号型数据。 例例4-324-32:使用:使用symsym函数定义符

59、号表达式函数定义符号表达式axax2 2+bx+c +bx+c x = sym(x) creates the symbolic x = sym(x) creates the symbolic variable with name x and stores the variable with name x and stores the result in x. result in x. MATLAB其他数据类型 a=sym(a); a=sym(a); b=sym(b);b=sym(b); c =sym(c); c =sym(c); x=sym(x);x=sym(x); f=af=a* *x2+b

60、x2+b* *x+cx+c f=f= a a* *x2+bx2+b* *x+cx+c 例例4-324-32:使用:使用symsym函数定义符号表达式函数定义符号表达式ax2+bx+cax2+bx+c MATLAB其他数据类型 syms syms函数的功能比函数的功能比symsym函数要更为强大,函数要更为强大, 它一次可以创建任意多个符号变量。而且,它一次可以创建任意多个符号变量。而且, symssyms函数的使用格式也很简单。函数的使用格式也很简单。 格式为:格式为:syms arg1 arg2 . syms arg1 arg2 . 例例4-334-33:使用:使用symssyms函数定义符

温馨提示

  • 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
  • 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
  • 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
  • 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
  • 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
  • 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
  • 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

评论

0/150

提交评论