
上QQ阅读APP看书,第一时间看更新
3.2 单元数组
单元数组又称细胞数组(Cell Array),其基本元素是细胞,每个细胞可以存储不同类型、不同维数的数据。
3.2.1 单元数组的创建
单元数组中不同位置可有不同数据类型,它可以有数字、字符串组成,其创建方法有以下几种。
1.使用大括号{}直接创建
例如:

2.对细胞元素直接赋值创建
【例3-1】 创建一个学生的各科成绩单元数组。

运行结果如下:

3.利用函数cell创建一个大小合适的空矩阵

【例3-2】 创建2×3的细胞数组。

注:该方法首先使用cell()函数定义一个单元数组。此时,数组的各元素还没有定义,因此所显示的单元数组中元素都用空阵[]来表示。然后,依次输入单元数据中各元素的值,可以发现,每输入一个值,用相应的值代替空阵。
3.2.2 单元数组的显示
1.celldisp()函数

例如,对【例3-2】中的细胞数组C,执行命令:

显示结果如下:

2.cellplot()函数

例如,对【例3-2】中的细胞数组C,继续执行命令:

显示结果如图3-1所示。

图3-1 单元型变量的结构
3.2.3 单元数组的内容获取
为了获取单元数组中一个单元的值,可使用大括号。例如,对【例3-2】中的数组C,执行命令:

实际上,C{1}相当于C{1,1},C{2}相当于C{2,1},C{3}相当于C{1,2}。注意大括号与小括号的不同,大括号用于表示单元而不考虑这些单元的值,而小括号用于寻址单元的值。例如:

3.2.4 单元数组的数据处理
MATLAB的单元数组在进行统计分析时,不能直接使用计算统计量的函数,而必须将单元数组中单元的数值转化成数值向量,然后进行数值计算。
例如,对【例3-1】中形成的数组,计算这个学生的总成绩。
由于数组B的显示结果为:

若直接对B的第2行求和,命令行窗口显示出错。这时需将单元数组转化成数值数组,具体程序如下:

运行结果如下:
