资源描述
,单击此处编辑母版标题样式,单击此处编辑母版文本样式,*,数学实验,Matlab,数据类型,变量,变量是任何程序设计语言的,基本元素,之一。,Matlab,并不要求对所使用的变量进行事先声明,也不需要指定变量类型,,Matlab,会自动根据所赋予变量的值或对变量所进行的操作来确定变量的类型。,在赋值过程中,如果变量已经存在,,Matlab,会用新值代替旧值,并以,新的变量类型代替旧的变量类型,。,变量与常量,变量名长度,不超过 65,(Matlab6.5.1,版本以上,),变量名必须,以字母开头,,可包含字母(大小写)、数字和下划线,变量的命名规则,变量名,区分大小写,常量名,常量值,常量名,常量值,i,j,虚数单位,realmin,最小的正浮点数,pi,圆周率,realmax,最大的正浮点数,eps,浮点运算相对精度,NaN,不定值,Inf,无穷大,Matlab,中经常使用的一些常量,Matlab 常量,Matlab,中有一些预定义的变量,这些特殊变量称为常量。,Matlab7.1,中的数据类型表,逻辑,字符,细胞,函数句柄,在缺省(默认)状态下,,Matlab,将所有的数都看作是双精度的浮点数。,使用整型变量和单精度变量可以节约内存空间。,数值型,数值型数据包括,整数:,带符号,和,无符号,浮点数:,单精度,和,双精度,数据类型,取值范围,转换函数,带符号,8,位整型,-2,7,2,7,1,int8,带符号,16,位整型,-2,15,2,15,1,int16,带符号,32,位整型,-2,31,2,31,1,int32,带符号,64,位整型,-2,63,2,63,1,int64,无符号,8,位整型,0,2,8,1,uint8,无符号,16,位整型,0,2,16,1,uint16,无符号,32,位整型,0,2,32,1,uint32,无符号,64,位整型,0,2,64,1,uint64,整数,Matlab,提供四种带符号整型和四种无符号整型,相同整型数据之间的运算,结果为同类型的整数。,例:,int8(12)*int16(3),X,整型数据可以和,双精度标量,进行数值运算,,结果为整数,。在运算过程中,保持浮点运算精度,,最后将结果转换成整型。,整型数据不能与不是标量的双精度,数组,进行运算,整型数据的运算,整型数据可以参与的运算有下面两种:,不同的整型数据之间不能进行运算,可以用,intmax,和,intmin,函数来查询不同整型所能表示的最大整数和最小整数。,例:,最大整数与最小整数,intmax(int8);,intmin(int8);,intmax(uint8);,intmin(uint8);,intmax;,intmin;,intmax(int32);,intmin(int32);,最大和最小浮点数,可以用,realmax,和,realmin,函数来查询单精度和双精度所能表示的最大浮点数和最小浮点数。,例:,realmax(single);,realmin(single);,realmax(double);,realmin(double);,realmax;,realmin;,realmax(double);,realmin(double);,整型数据相关函数,浮点数相关函数,其它相关函数,判断数据类型相关函数,字符串和字符数组,字符串必须用,单引号,括起来,字符串是由多个字符组成的,字符行向量,字符与字符串,字符与字符串运算是各种高级语言不可缺少的部分,,Matlab,具有强大的字符处理能力。,str1=Matrix Laboratory,str2=M,a,t,r,i,x,字符数组必须是方的,即每行的字符个数必须相等,str3=M,a,t;r,i,x,字符串中的每个字符(包括空格)都是字符串的一个元素,字符与字符串,str=Matrix;,str,(3),size,(str),str=Matrix;,double,(str(3);,double,(str);,Matlab,中字符是以,ASCII,码存储的,因而,区分大小写,,可用,double,函数查看一个字符的,ASCII,码,使用,char,函数,ASCII,码,字符串,字符串的生成,直接赋值,str1=Matrix;,str2=Laboratory;,str=str1,str2;,str=,char,(77,97,116,108,97,98),str=,char,(str1,str2),生成一个字符数组,第一行为,str1,,第二行为,str2,举例,a=97,97.3;97.8,98;,str1=,char,(a);,str2=,num2str,(a);,str3=,int2str,(a);,str4=,mat2str,(a);,char,的输入参数范围为,0,65535,,当输入参数中有小数时,直接将小数部分舍去。,num2str,直接将每个数字转换成字符,mat2str,把整个矩阵转换成字符,行向量,,包括矩阵中的,方括号,、,空格,和,分号,(逗号自动去除),举例,str5=,mat2str,(97,97.3;97.8,98);,数值数组转换为字符数组后,表面上看,象一个数值数组,,但此时的元素是字符而不是数字!,a=1,2,3,b=,num2str,(a),c=2*a,d=2*b,e=2*,str2num,(b),double,、,char,是按,ASCII,码 进行转换,num2str,、,int2str,、,mat2str,、,str2num,是直接进行转换,字符串的合并,垂直,合并,直接使用中括号,使用,strvcat,函数,str3=Matrix ;Laboratory,str4=,strvcat,(Matrix,Laboratory),在中括号中用,分号,实现垂直,合并,,必须保证每个字符串,的,长度相等,否则需用空格补齐,用,strvcat,合并,,自动为较短的字符串,补充,空格,垂直合并,得到的是一个字符,数组,运行字符串,运行字符串所表示的表达式或命令:,eval,str=1+2;,a=,eval,(str),str=A=magic(3);,eval,(str),str1=figure(1);mesh(peaks(60);,str2=figure(2);waterfall(peaks(60);,eval,(str1),eval,(str2),细胞变量的表示方法类似于带有下标的数组,但这些下标不是用圆括号括起来,而是使用,大括号,。,普通数组中的每个元素都必须具有相同的数据类型,而细胞则没有此要求。,细胞数组,Matlab,从 5.0 版开始引入了一种新的数据类型,细胞,(,cell,),,该结构可以,把不同类型的数据纳入到一个变量,中。,细胞数组举例,用赋值语句直接定义,用,cell,函数预先分配存储空间,然后对细胞的每个元素逐个赋值。,细胞变量的定义,A=1 2;3 4;str=Matlab;,M=,1:4,A,str,;,celldisp,(M),cell(m,n),生成一个,m,行,n,列,的细胞数组。,可以通过以下两种方式定义一个细胞变量,举例,A=1 2;3 4;str=Matlab;,M=,1:4,A,str,;,N=hello,M;,celldisp,(N);,A=1 2;3 4;str=Matlab;,M=,cell,(1,3);,M1,1=1:4;M1,2=A;M1,3=str;,celldisp,(M),细胞变量元素的引用,A=1 2;3 4;str=Matlab;,M=,1:4,A,str,;,N=hello,M;eye(2),magic(3);,N1,1,N1,2,N1,21,2,N1,21,2(2,1),细胞变量的引用必须使用,大括号,。,相关函数,celldisp,输出细胞变量的内容。,cellplot,用图形方式显示细胞变量的内容。,iscell,判别一个变量是否为细胞变量。,举例,A=1 2;3 4;str=Matlab;,M=,1:4,A,str,;,celldisp,(M);,cellplot(M);,iscell(A),iscell(M),
展开阅读全文