MATLAB R2020a从入门到精通(升级版)
上QQ阅读APP看本书,新人免费读10天
设备和账号都新为新人

9.1 单元数组的创建

用户可以通过两种方式来创建单元数组,即使用赋值语句创建单元数组和使用cell()函数创建单元数组。

9.1.1 使用赋值语句创建单元数组

单元数组中的每个元素称为单元(Cell)。单元数组中的每个单元都可以包含任何类型的MATLAB数据类型,这些数据类型包括数值型数组、字符、符号对象,以及其他的单元数组。

不同的单元可以包含不同的数据。例如,在一个单元数组中,第1个单元可以包含一个数值型数组,第2个单元可以包含一个字符串数组,而第3个单元可以包含一个复数向量。

从原理上讲,MATLAB可以创建任意维数的单元数组,就像数值型数组一样。但是,在大多数情况下,为了方便处理,用户通常只需要将单元数组创建成一个简单的单元向量(一维单元数组)。

下面介绍单元数组的第1种创建方式:直接赋值法。根据在赋值时对单元访问方式的不同,又分为如下两种赋值方法。

(1)如果用标准数组的数组语法来索引进行数组赋值,那么赋值时就必须将赋给单元的值用花括号({})括起来,这个花括号表明其中的表达式是单元中的内容,而不是一个普通的数组或字符串,我们将这种方法称为按单元索引法。

下面创建一个2×2的单元数组,并利用按单元索引法对每个单元进行直接赋值:

img

由此可以看到,MATLAB并没有将A中所有的单元内容显示出来,这是因为A中的有些单元(如A(1,1)和A(2,2))占有比较大的显示空间,为了方便显示,MATLAB只显示这些内容的大小和数据类型。

要想完全显示所有单元的内容,可以使用celldisp()函数强制MATLAB以通常的方式显示单元的值。例如,如下所示的代码可以将单元数组A中的所有单元都显示出来:

img

(2)按内容索引法是将花括号写在等号左边,右边是将要赋的值。例如,如下所示的代码使用按内容索引法将这些语句生成了与前面相同的单元数组A:

img

同样,利用celldisp()函数也可以显示单元数组中的内容。

9.1.2 使用cell()函数创建单元数组

单元数组还有另外一种创建方法:使用cell()函数,即对单元数组也可以进行同样的操作。先利用cell()函数生成一个空的单元数组,然后向其中添加所需的数据,用空的数值型数组“[]”来填充这个单元数组。例如,如下所示的代码生成了一个2×3的空单元数组:

img

使用cell()函数生成空单元数组,该数组被定义后,可以采用按内容索引法和按单元索引法对其进行赋值。

在赋值时,用户一定要注意花括号和圆括号的正确用法,单元索引和内容寻址都可以用来填充这些单元。例如,如下所示的代码就是括号使用不当所造成的错误:

img

在上述代码中,等号左边使用了按单元索引法,因此等号右边必须是一个单元,但等号右边实际上并不是一个单元。所以,MATLAB最终发出了一条出错信息。下面给出正确的赋值方法:

img

在上述代码中,第2条语句使用了按内容索引法,因为花括号出现在最后一条语句的等号左边,MATLAB就把等号右边的字符串视为这个左边单元的值直接赋给该单元。