MATLAB GUI程序设计
上QQ阅读APP看书,第一时间看更新

2.4 元胞数组

在MATLAB中,元胞数组是一种特殊数据类型,可以将元胞数组看作为一种无所不包的通用矩阵(广义矩阵),组成元胞数组的元素可以是任何一种数据类型的常数或常量。

数据类型可以是字符串、双精度数、稀疏矩阵、元胞数组、结构或其他MATLAB数据类型,每一个元胞数据可以是标量、向量、矩阵、N维数组,每一个元素可以具有不同的尺寸和内存空间,内容可以完全不同,元胞数组的元素叫作元胞,元胞数组的内存空间是动态分配的,元胞数组的维数不受限制,访问元胞数组的元素可以使用单下标方式或全下标方式。

2.4.1 元胞数组的创建

元胞数组的创建主要有以下几种方法:

(1)使用运算符花括号{},将不同类型和尺寸的数据组合在一起构成一个元胞数组;

(2)将数组的每一个元素用{}括起来,然后再用数组创建的符号[]将数组的元素括起来构成一个元胞数组;

(3)用{}创建一个元胞数组,MATLAB能够自动扩展数组的尺寸,没有明确赋值的元素作为空元胞数组存在;

(4)用函数cell创建元胞数组。该函数可以创建一维、二维或者多维元胞数组,但创建的数组都为空元胞。

【例2-64】 方法(1)示例。

程序命令如下:

运行结果如下:

【例2-65】 方法(2)示例。

程序命令如下:

运行结果如下:

【例2-66】 方法(3)示例。

程序命令如下:

运行结果如下:

【例2-67】 方法(4)示例。

程序命令如下:

运行结果如下:

2.4.2 元胞数组的基本操作

元胞数组的基本操作包括对元胞和元胞数据的访问、修改和元胞数组的扩展、收缩或者重组。操作数值数组的函数也可以应用在元胞数组上。

在MATLAB中元胞数组的访问有以下几种方法:

(1)可以使用圆括号()直接访问元胞数组的元胞,获取的数据也是一个元胞数组;

(2)使用花括号{}直接访问元胞数组的元胞,获取的数据是字符串;

(3)将花括号{}和圆括号()结合起来使用访问元胞元素内部的成员。

元胞数组的扩充、收缩和重组均与数值数组大体相同。

【例2-68】 方法(1)示例。

程序命令如下:

运行结果如下:

【例2-69】 方法(2)示例。

程序命令如下:

运行结果如下:

【例2-70】 方法(3)示例。

程序命令如下:

运行结果如下:

【例2-71】 元胞数组的扩充示例。

程序命令如下:

运行结果如下:

2.4.3 元胞数组的操作函数

在MATLAB中,提供的元胞数组的操作函数如表2-15所示。

表2-15 元胞数组的操作函数

cellfun函数主要功能是为元胞数组的每个元素(元胞)分别指定不同的函数,在cellfun函数中可用的函数如表2-16所示。

表2-16 cellfun函数中可用的函数

cellfun函数还有以下两种用法:

cellfun('size',C,K)用于获取元胞数组元素第K维的尺寸。

cellfun('isclass',C,classname)用于判断元胞数组的数据类型。

【例2-72】 cellfun函数用法示例。

程序命令如下:

运行结果如下:

【例2-73】 利用celldisp函数显示所有元胞数组的内容。

程序命令如下:

运行结果如下:

【例2-74】 利用cellplot函数显示元胞数组。

程序命令如下:

如图2-2所示,运行结果如下:

图2-2 利用cellplot函数显示元胞数组

【例2-75】 利用cell2mat函数将元胞数组转变成为普通的矩阵。

程序命令如下:

运行结果如下:

【例2-76】 利用mat2cell函数将普通的矩阵转变为元胞数组。

程序命令如下:

运行结果如下:

【例2-77】 利用num2cell函数将数值数组转变为元胞数组。

程序命令如下:

运行结果如下: