1.3.2 数据类型

MATLAB有15种基本的数据类型,每一种数据类型都是以数组为基础。主要的数据类型有:数值型、逻辑型、字符型、元胞型、结构型等。与其他计算机语言相比,MATLAB中的数据类型具有很好的灵活性。

1.数值型数据

(1)整型:带符号和无符号。

(2)浮点型:单精度和双精度。

在默认状态下,MATLAB将所有的数都看作双精度的浮点数。使用整型变量和单精度变量可以节约内存空间,表1-2为MATLAB的4种带符号整型和4种无符号整型。

表1-2 MATLAB 4种带符号整型和4种无符号整型

整型数据可以参与的运算有以下两种:

● 相同整型数据之间的运算,结果为同类型的整数。

● 不同的整型数据之间不能进行运算。

整型数据可以和双精度标量进行数值运算,结果为整数。在运算过程中保持浮点运算精度,最后将结果转换成整型。整型数据不能与不是标量的双精度数组进行运算,可以用intmax()和intmin()函数来查询不同整型所能表示的最大整数和最小整数。

浮点数包括单精度(占4字节)和双精度(占8字节),默认为双精度。浮点数转换函数主要有:

● single:将数据转换成单精度浮点数。

● double:将数据转换成双精度浮点数。

表1-3为浮点数与其他类型数据运算表。

表1-3 浮点数与其他类型数据运算表

可以用realmax()和realmin()函数来查询单精度和双精度所能表示的最大浮点数和最小浮点数。

(3)复数:MATLAB的一个比较强大的功能就是直接在复数域上进行运算,而不用进行任何特殊的操作,在MATLAB中提供了一些函数来得到复数的一些基本数值。

● angle(z):复数z的相角(Phase angle)。

● sqrt(x):开平方。

● real(z):复数z的实部。

● imag(z):复数z的虚部。

● conj(z):复数z的共轭复数。

(4)无穷大数:MATLAB中,可以产生正无穷和负无穷的数,用inf或-inf表示。

2.逻辑型数据

逻辑型数据0和1分别表示假和真两种状态,另外逻辑数据不一定都是标量。MATLAB中同样支持逻辑型数组。

3.字符型

MATLAB中用CHAR表示一个字符型数据,由多个字符按行向量的形式组成一个字符串,字符串中每个字符对应行向量的一个元素,字符串用一对单引号“"”标识。可以直接输入单引号法和调用函数char()两种方法生成字符串。

在MATLAB中提供了一些字符串运算函数:

● blanks(n):创建由n个空格组成的字符串。

● deblank(str):裁切字符串的尾部空格。

● strtrim(str):裁切字符串的开头和尾部的空格、制表符、回车符。

● lower(str):将字符串中的字母转换成小写。

● upper(str):将字符串中的字母转换成大写。

● sort(str):按照字符的ASCII值对字符串排序。

● num2str:将数字转换为数字字符串。

● str2num:将数字字符串转换为数字。

● mat2str:将数组转换成字符串。

● int2str:把数值数组转换为整数数字组成的字符数组。

● strcmp:比较两个字符串是否完全相等。若相等,返回真;否则,返回假。

● strncmp:比较两个字符串前n个字符是否相等。若相等,返回真;否则,返回假。

● strcmpi:比较两个字符串是否完全相等,忽略字母大小写。

● strncmpi:比较两个字符串前n个字符是否相等,忽略字母大小写。

● isletter:检测字符串中每个字符时否属于英文字母。

● isspace:检测字符串中每个字符是否属于格式字符(空格、回车、制表、换行符等)。

● isstrprop:检测字符每一个字符是否属于指定的范围。

4.元胞型

元胞型是MATLAB的一种特殊数据类型,可以将元胞数组看作一个无所不包的通用矩阵,或者叫作广义矩阵。组成元胞数组的元素可以是任何一种数据类型的常数或者常量,每一个元素也可以具有不同的尺寸和内存占用空间,每一个元素的内容也可以完全不同,所以元胞数组的元素叫作元胞。

5.结构型

结构型变量是另外一种可以将不同的数据类型组合在一起的特殊数据类型,可以存储一系列相关数据,同一个数据字段必须具有相同的数据类型。可以通过直接赋值的方法或者由STRUCT函数分配存储空间。