您好,欢迎访问三七文档
当前位置:首页 > 机械/制造/汽车 > Matlab的数据类型
第三章Matlab的数据类型主要内容:MATLAB基本数值类型逻辑类型字符串元胞数组结构Matlab的数据类型(续)3.1概述3.2MATLAB基本数值类型3.3逻辑类型和关系运算3.4字符串3.5元胞数组3.6结构3.7小结3.1概述MATLAB支持的基本数据类型MATLAB数据类型基本数值类型字符串元胞数组结构函数句柄Java对象逻辑类型双精度类型单精度类型整数类型用户自定义类内嵌对象int8,uint8int16,uint16int32,uint32int64,uint64概述(续)MATLAB的基本数据类型是双精度数据类型和字符类型MATLAB的不同数据类型的变量或对象占用的内存空间不同不同的数据类型的变量或对象也具有不同的操作函数第三章3.1概述3.2MATLAB基本数值类型3.3逻辑类型和关系运算3.4字符串3.5元胞数组3.6结构3.7小结MATLAB的基本数值类型变量或者对象主要用来描述基本的数值对象MATLAB还存在的一些数据常量数据是指在使用MATLAB过程中由MATLAB提供的公共数据数据可以通过数据类型转换的方法转换常量到不同的数据类型,还可以被赋予新的数值空数组或空矩阵在创建数组或者矩阵时,可以使用空数组或空矩阵辅助创建数组或者矩阵3.2Matlab基本数值类型3.2.1基本数值类型数据类型说明字节数double双精度数据类型8sparse稀疏矩阵数据类型N/Asingle单精度数据类型4uint8无符号8位整数1uint16无符号16位整数2uint32无符号32位整数4uint64无符号64位整数8int8有符号8位整数1int16有符号16位整数2int32有符号32位整数4int64有符号64位整数8class函数可以用来获取变量或对象的类型可以用来创建用户自定义的数据类型基本数值类型(续)例A=[123];class(A)ans=doublewhosNameSizeBytesClassA1x324doublearrayans1x612chararrayGrandtotalis9elementsusing36bytesB=int16(A);class(B)ans=int16whosNameSizeBytesClassA1x324doublearrayB1x36int16arrayans1x510chararrayGrandtotalis11elementsusing40bytes基本数值类型(续)MATLAB和C语言在处理数据类型和变量时的区别在C语言中,任何变量在使用之前必须声明,然后赋值,在声明变量时就指定了变量的数据类型在MATLAB中,任何数据变量都不需要预先声明,MATLAB将自动地将数据类型设置为双精度类型例A=[123];B=[345];C=A+B;whosNameSizeBytesClassA1x324doublearrayB1x324doublearrayC1x324doublearrayGrandtotalis9elementsusing72bytesint16(A)+int16(B)???Errorusing==+Function'+'isnotdefinedforvaluesofclass'int16'.基本数值类型(续)C=int16(A+B)C=468class(C)ans=int16MATLAB系统默认的运算都是针对双精度类型的数据或变量稀疏矩阵的元素仅能使用双精度类型的变量spares类型的数据变量和整数类型数据、单精度数据类型变量之间的转换是非法的在进行数据类型转换时,若输入参数的数据类型就是需要转换的数据类型,则MATLAB忽略转换,保持变量的原有特性基本数值类型(续)整数类型数据的运算函数3.2.2整数类型数据运算函数说明bitand数据位“与”运算bitcmp按照指定的数据位数求数据的补码bitor数据位“或”运算bitmax最大的浮点整数数值bitxor数据位“异或”运算bitset将指定的数据位设置为1bitget获取指定的数据位数值bitshift数据位移操作注意:参与整数运算的数据都必须大于0例:数据位“与”操作A=86;B=77;C=bitand(A,B)C=68a=uint16(A);b=uint16(B);c=bitand(a,b)c=6886的补码:0101011077的补码:01001101“与”运算的结果:01000100整数类型数据运算(续)whosNameSizeBytesClassA1x18doublearrayB1x18doublearrayC1x18doublearraya1x12uint16arrayb1x12uint16arrayc1x12uint16arrayGrandtotalis6elementsusing30bytes例:数据位操作(bitset函数)A=86;dec2bin(A)ans=1010110B=bitset(A,6)B=118dec2bin(B)ans=1110110C=bitset(A,7,0)C=22dec2bin(C)ans=10110整数类型数据运算(续)bitset(A,B,C)函数根据输入的第二个参数设置相应的数据位的数值,若不指定第三个参数,则将相应的数据位设置为“1”,否则根据输入的第三个参数设置相应的数据位。A=86A=86B=bitset(A,6)B=118C=bitset(A,7,0)C=22例:数据位操作(bitget函数)A=86;dec2bin(A)ans=1010110bitget(A,6)ans=0bitget(A,3)ans=1整数类型数据运算(续)bitget(A,B)函数根据输入的第二个参数获取指定的数据位的数值。A=86;bitget(A,6)ans=0bitget(A,3)ans=1例:数据位操作(bitshift函数)A=86;dec2bin(A)ans=1010110D=bitshift(A,4);dec2bin(D)ans=10101100000E=bitshift(A,-4);dec2bin(E)ans=101→(0000101)整数类型数据运算(续)Bitshift(A,B)函数第二个参数为正,则左移第二个参数为负,则右移A=86;D=bitshift(A,4)D=1376E=bitshift(A,-4)E=5MATLB的常量3.2.3MATLAB的常量常量说明ans最近运算的结果eps浮点数相对精度,定义为1.0到最近浮点数的距离realmaxMATLAB能表示的实数的最大绝对值realminMATLAB能表示的实数的最小绝对值pi圆周率的近似值3.1415926i,j复数的虚部数据最小单位inf或Inf表示正无大,定义为1/0NaN或nan非数,它产生于0×,0/0,/等运算eps、realmax、realmin三个常量具体的数值与运行MATLAB的计算机相关,不同的计算机系统可能具有不同的数值epsans=2.2204e-016realmaxans=1.7977e+308realminans=2.2251e-308MATLAB的常量(续)MATLAB的常量数值是可以修改的pi=100pi=100clearpians=3.1416MATLAB的常量(续)将inf应用于函数,计算结果可能为inf或NaN。例:NaN和Inf运算示例A=Inf;class(A)ans=DoubleB=int16(A)B=32767进行数据转换时,Inf将获取相应数据类型的最大值,而NaN返回相应整数数据类型的数值0,浮点数类型则仍然为NaNMATLAB的常量(续)C=sin(A)C=NaNsin(C)ans=NaNclass(C)ans=doubleint64(C)ans=0int32(C)ans=0例:最小复数单位的使用a=ia=0+1.0000ii=1i=1b=i+jb=1.0000+1.0000iclearc=i+jc=0+2.0000iMATLAB的常量(续)MATLAB的常量是可以赋予性的数值的。一旦被赋予了新的数值,则常量代表的就是新值,而不是原有的值,只有执行clear命令后,常量才会代表原来的值空数组是指某一个维或者某些维的长度为0的数组为了完成某些MATLAB操作和运算而专门设计的一种数组利用空数组可以修改数组的大小,但不能修改数组的维数3.2.4空数组创建空数组例:A=[]A=[]B=ones(2,3,0)B=Emptyarray:2-by-3-by-0C=randn(2,3,4,0)C=Emptyarray:2-by-3-by-4-by-0whosNameSizeBytesClassA0x00doublearrayB2x3x00doublearrayC4-D0doublearrayGrandtotalis0elementsusing0bytes空数组(续)空数组不意味着什么都没有,空数组类型的变量在MATLAB的工作空间中是存在的。使用空数组可以将大数组删除部分行或列可以删除多维数组的某一页空数组(续)例A=reshape(1:24,4,6)A=159131721261014182237111519234812162024%删除第2、3、4列A(:,[234])=[]A=11721218223192342024空数组(续)思考:如何删除第2、3行??A=1591317214812162024例A=reshape(1:24,4,6)A=159131721261014182237111519234812162024%删除第2、3、4列A(:,[234])=[]A=11721218223192342024空数组(续)思考:如何删除第2、3行?A([23],:)=[]A=1591317214812162024例A(2,2,3)=1A(:,:,1)=0000A(:,:,2)=0000A(:,:,3)=0001whosNameSizeBytesClassA2x2x396doublearrayGrandtotalis12elementsusing96bytes空数组(续)A(:,:,3)=[]A(:,:,1)=0000A(:,:,2)=0000whosNameSizeBytesClassA2x2x264doublearrayGrandtotalis8elementsusing64bytes第三章3.1概述3.2MATLAB基本数值类型3.3逻辑类型和关系运算3.4字符串3.5元胞数组3.6结构3.7小结3.3逻辑类型和关系运算逻辑数据类型逻辑运算关系运算运算符的优先级3.3.1逻辑数据类型逻辑数据类型逻辑数据类型就是仅具有两个数值的一种数据类型True——用1表示False——用0表示任何数值都可以参与逻辑运算非零值看作逻辑真零值看作逻辑假逻辑类型的数据只能通过数值类型转换,或者使用特殊的函数生成相应类型的数组或者矩阵逻辑数据类型(续)创建逻辑类型数据的函数函数说明logical将任意类型的数组转变为逻辑类型数组,其中非零元素为真,零元素为假True产生逻辑真值数组False产生逻辑假值数组逻辑数据类型(续)例:A=eye(3)A=100010001B=logical(A)B=100010001C=true(size(A))C=111111111D=false([size(A),2])?C=true(3,3)逻辑数据类型(续)例:A=eye(3)A=100010001B=logical(A)B=100010
本文标题:Matlab的数据类型
链接地址:https://www.777doc.com/doc-2887632 .html