目录
MATLAB中的数据类型主要包括数值类型、逻辑类型、字符串、函数句柄、结构体和单元数组类型。这6种基本的数据类型都是按照数组形式存储和操作的。MATLAB中还有两种用于高级交叉编程的数据类型,分别是用户自定义的面向对象的用户类类型和Java类类型。
(一)数值类型
基本的数值类型主要有整数、单精度浮点数和双精度浮点数。
数值类型的数据包括有符号和无符号整数、单精度浮点数和双精度浮点数。在未加说明与特殊定义时,MATLAB对所有数值按照双精度浮点数类型进行存储和操作。
(1)整数类型
MATLAB中提供了8种内置的整数类型,这8种整数类型的存储占用位数、能表示的数值范围和转换函数均不相同。不同的整数类型所占用的位数不同,因此能够表示的数值范围也不同。在实际应用中,应根据实际需要合理选择合适的整数类型。由于MATLAB中数值的默认存储类型是双精度浮点数类型,因此将变量设置为整数类型时,需要使用相应的转换函数,将双精度浮点数转换为指定的整数类型。
在转换过程中,MATLAB默认将待转换数值转换为与之最为接近的整数值,若小数部分为0.5,则转换后的结果为与该浮点数最接近的两个整数中绝对值较大的一个。
这些转换函数也可以将其他数据类型转换为指定的数据类型。在不超出数值范围的情况下,任意两个整数类型之间也可以通过转换函数进行相互转换。同时,由于不同的整数类型能够表示的数值范围不同,因此当运算结果超出相应的整数类型能够表示的范围时,就会出现错误,运算结果被置为该整数类型能够表示的最大值或最小值。
MATLAB中还包含了几类不同运算法则的取整函数,也可以把浮点数转换成整数
(2)浮点数类型
MATLAB中提供了单精度浮点数类型和双精度浮点数类型,其存储位宽、能够表示的数值范围、数值精度各方面均不相同。
单精度浮点数类型的占用位数少,因此占用内存小,但能够表示的数值范围和数值的精度都比双精度浮点数类型小。
双精度浮点数在参与运算时,返回值的类型依赖于参与运算的其他数据类型。当参与运算的其他数据为逻辑类型、字符类型时,返回结果为双精度浮点数类型;当参与运算的其他数据为整数类型时,返回结果为相应的整数类型;当参与运算的其他数据为单精度浮点数类型时,返回结果为相应的单精度浮点数类型。
在命令行窗口中输入:
输出结果:
MATLAB中,单精度浮点数类型不能与整数类型进行算术运算。
由于浮点数只占用一定的存储位宽,其中只有有限位分别用来存储指数部分和小数部分,因此,浮点数类型能够表示的实际数值是有限且离散的,任何两个最近相邻的浮点数之间都有微小间隙,而处在间隙中的数值只能用这两个相邻的浮点数之中的一个来表示。MATLAB中提供了eps函数,可以获取一个数值和最接近该数值的浮点数之间的间隙,也就是浮点数的精度。
在命令行窗口中输入:
输出结果:
(3)复数
复数包括实部和虚部两部分。MATLAB中默认使用字符i或j作为虚部标志。在创建复数时,可以直接按照复数形式进行输入或者使用complex函数。
MATLAB库函数中关于复数的相关函数如表所示。
(4)无穷量(Inf)和非数值量(NaN)
MATLAB中使用Inf和-Inf分别代表正无穷量和负无穷量,NaN表示非数值量。
正负无穷量的产生一般是由于运算溢出,产生了超出双精度浮点数数值范围的结果;非数值量则是由于0/0或Inf/Inf类型的非正常运算而产生的,这两个NaN彼此是不相等的。
除了异常运算结果,MATLAB还提供了特定函数Inf和NaN来创建指定数值类型的无穷量和非数值量,生成结果默认为双精度浮点数类型。
还有一种特殊的指数类型的数据叫作非数,通常表示运算得到的数值结果超出了运算范围。非数的实部用NaN表示,虚部用InF表示。
在命令行窗口中输入:
输出结果:
(二)逻辑类型
逻辑类型的数据是指布尔类型的数据及数据之间的逻辑关系。
除了传统的数学运算,MATLAB还支持关系和逻辑运算。这些运算的目的是提供求解真/假命题的答案。
作为所有关系和逻辑表达式的输入,MATLAB把任何非零数值当作真,把零当作假。
所有关系和逻辑表达式的输出:对于真,输出为1;对于假,输出为0。