元胞数组(Cell Array)将类型不同的相关数据集成到一个单一的变量中,使得大量相关数据的引用和处理变得简单方便。cell元胞数组,存储不同类型的数据。
A cell array is a collection of containers called cells in which you can store different types of data.

1、元胞数组的创建

创建方法有3种:直接赋值法、利用函数cell()、利用{ }直接创建元胞数组的所有单元。

1.1 直接赋值法

通过赋值语句把值赋到元胞数组的一个单元中,但每一次赋值只能创建一个单元内容。

两种赋值方法:内容索引法(content indexing)和单元索引法(cell indexing)。

(1)内容索引法

赋值语句的左边用大括号{ }将标识单元的下标括起来,右边为单元的内容。

CellRangeAddress各个参数 cell(contents)_cell


(2)单元索引法

赋值语句的左边用小括号()将标识单元的下标括起来,右边用大括号将存储于单元中的数据括起来。

CellRangeAddress各个参数 cell(contents)_cell_02

1.2 利用函数cell()

利用函数cell() 可以创建一个元胞数组,还可以规定其大小。

CellRangeAddress各个参数 cell(contents)_元胞数组_03

1.3 利用{ }直接创建元胞数组(的所有单元)

这是一种快捷的元胞数组创建方法,利用{ }可以直接快速地创建所需元胞数组。在大括号中一次列出所需创建元胞数组的内容,它们之间用逗号(,)隔开,行与行之间用分号(;)隔开,这样就可以创建一个已经初始化好的元胞数组。

CellRangeAddress各个参数 cell(contents)_赋值_04

2、元胞数组的寻访

在编程时,一个元胞数组的每一个单元都是一个指针,指向其他的数据结构,而这些数据结构可以是不同的数据类型。在MATLAB中,元胞数组创建时,没有显示内容单元的内容,显示的只是它相应的数据类型。而MATLAB可以通过单元的名称来寻访其单元包含的内容。
通过()访问cell数组时访问到的是cell单元,通过{}访问cell数组时访问到的是cell单元储存的内容。
在MATLAB中,元胞数组的寻访有以下三种形式。
(1)用( )将下标括起来寻访其单元的结构类型。
(2)用{ }将下标括起来寻访其单元的内容。
(3)用celldisp( )函数对元胞数组的所有内容进行寻访。

例子

可以直接通过{}类似于矩阵的直接赋值:a={‘winter’,123,‘coming’,‘哈哈’};

也可以通过cell函数预分配内存,再赋值:a=cell(1,4);a={‘winter’,123,‘coming’,‘哈哈’};

CellRangeAddress各个参数 cell(contents)_cell_05


CellRangeAddress各个参数 cell(contents)_cell_06


CellRangeAddress各个参数 cell(contents)_数组_07

3、cell单元的删除

矩阵及矩阵的删除可以通过[]实现

CellRangeAddress各个参数 cell(contents)_元胞数组_08


元胞数组删除操作区别就在于{}和()
a={1,2,3};
a{1}=[]; %并不能删除第一个cell单元,只是变成空值
a(1)=[]; %删除第一个单元
a(:)=[]; %一次性删除所有cell单元

CellRangeAddress各个参数 cell(contents)_赋值_09

4、相关函数

· celldisp:显示元胞数组中所有的内容
· cell:创建空的元胞数组
· cellplot:利用图形方式显示内容
· cell2mat:将数组转变成为普通的矩阵
· mat2cell:将数值矩阵转变成为cell数组
· num2cell:将数值数组转变成为cell数组
· cell2struct:将数组转变成为结构
· struct2cell:将结构转变为cell数组
· iscell:判断输入是否为cell数组