目录
二、MATLAB数据类型
MATLAB中有15种基本的数据类型,分别是8种有符号/无符号整数类型、单精度浮点类型、双精度浮点类型、逻辑数据类型、字符串类型、元胞数组、结构体、函数句柄。
1、MATLAB中的数值类型
MATLAB中的数值类型包括有符号和无符号整数,单精度和双精度浮点数。在默认情况下,MATLAB按照双精度浮点数类型对所有数值进行存储和操作。
(1) 整数类型
MATLAB中的取整函数
当一个整数类型数值与一个双精度浮点类型数值进行数学运算时,计算结果是这种整数类型,取整采用默认的四舍五入方式。
两种不同的整数类型之间不能进行数学运算,除非提前进行强制转换。
数学运算中,运算结果超出相应的整数类型能够表示的范围时,就会出现溢出错误,运算结果被置为该整数类型能够表示的最大值或最小值。
(2) 浮点数类型
双精度浮点数与逻辑型、字符型进行运算时,返回结果为双精度浮点类型;而与整数型进行运算时返回结果为相应的整数类型,与单精度浮点型运算返回单精度浮点型。
注意:单精度浮点型不能和整数型进行算术运算。
(3) 复数
(4) 无穷量(Inf)和非数值量(NaN)
MATLAB中用Inf和-Inf分别代表正无穷和负无穷,用NaN表示非数值的值。注意:两个NaN彼此是不相等的。
(5) 数值类型的显示格式
默认情况下,MATLAB使用5位定点或浮点型显示格式。
2、结构体(Structure)
一个结构体可以通过字段存储多个不同类型的数据。因此,结构体相当于一个数据容器,把多个相关联的不同类型的数据封装在一个结构体对象当中。一个结构体对象就是一个1*1的结构体数组。
(1) 结构体的创建
创建结构体对象有两种方法:直接采用赋值语句给结构体的字段赋值;通过结构体创建函数struct来创建。
采用赋值语句
“结构体名称.字段名称”
同一个结构体数组中的所有结构体对象具有相同的字段,没有明确赋值的字段,MATLAB默认赋值为空数组。
采用struct函数
struct函数的语法形式:strArray=struct('field1',val1,'field2',val2,...),将第n个字段fieldn赋值为valn
这一语句中valn可以是具有相同尺寸的元胞数组,这样则会创建和元胞数组具有相同尺寸的结构体数组strArray,并将各个结构体元素的字段fieldn赋值为valn元胞数组中对应位置上的取值。
(2) 获取结构体内部数据
对于结构体数组,可以通过括号、下标索引来访问其内部的数据,需要注意的是结构体名和字段之间用点(.)连接。
多个结构体对象的同一字段值可以赋值给元胞数组。
(3) 结构体数组操作函数
size函数:获取结构体数组的尺寸。如果size函数的输入参数是结构体字段,则返回的是该字段的尺寸信息。
增加新字段:只需要添加新的字段赋值语句即可。
删除字段:rmfield函数,其语法格式为newstrArray=rmfield(strArray,'filename'),表示从strArray中删除filename代表的字段。
(4) 结构体嵌套
结构体的字段中也能存储结构体类型的数据,这就是结构体嵌套。
(5) 结构体函数
3、元胞数组
元胞数组是对常规的数值数组的扩展,其每个元素称为一个元胞,每一个元胞中可以存储任意类型、任意尺寸的数据。
(1) 元胞数组的创建
直接赋值创建
采用cell函数创建
arrayName=cell(m,n):创建包含m行n列个元胞的元胞数组。这一语句只用于元胞数组的预声明,之后还需要对每一个元胞内的数据进行初始化赋值。
注意:圆括号括起下标只能定位元胞数组中的每一个单元,而这些单元是元胞类型的;要访问元胞中存储的数据,则要用花括号括起下标来访问。
(2) 元胞数组的显示
MATLAB中默认用紧密格式显示元胞数组,在这种格式下,绝大部分类型的元胞只显示其数据类型和尺寸,而不显示具体的数据内容。
MATLAB提供了celldisp函数,可以用来逐个显示元胞的具体数据内容。
(3) 嵌套元胞数组
元胞数组也可以互相嵌套,就是一个元胞单元中存储了元胞数组类型的数据。