元胞数组是MATLAB 的一种特殊数据类型,可以将元胞数组看作一种无所不包的通用矩阵,或者叫作广义矩阵。组成元胞数组的元素可以是任何一种数据类型的常数或者常量,每一个元素也可以具有不同的尺寸和内存占用空间,每一个元素的内容也可以完全不同,所以元胞数组的元素叫作元胞(cell)。
例:
>> a={'matlab',20;ones(2,3),1:10}
a =
'matlab' [ 20]
[2x3 double] [1x10 double]
元胞数组的创建使用“{ }”。创建数组a的时候,使用花括号将不同类型和尺寸的数据组合在一起构成了一个元胞数组,在这个数组中有标量、多维数组、向量和字符串。
>> b=[{'matlab'},{20};{ones(2,3)},{1:10}]
b =
'matlab' [ 20]
[2x3 double] [1x10 double]
两种方法创建的数组是相同的。
还可以用cell函数创建空元胞数组,该函数可以创建一维、二维或多维元胞数组,但是创建的数组都为空元胞。
>> a=cell(1)
a =
{[]}
>> b=cell(1,2)
b =
[] []
>> c=cell(3,3)
c =
[] [] []
[] [] []
[] [] []
cell函数创建空元胞数组的主要目的是为数组预先分配连续的存储空间,节约内存占用,提高执行效率。
获得元胞数组中的数据:
可通过用元胞数组名加大括号“{}”,大括号中的数值表示元胞的下标。如a{1,2}表示元胞数组中第一行第二列的元胞。
>> a={'matlab',20;ones(2,3),1:10}
a =
'matlab' [ 20]
[2x3 double] [1x10 double]
>> a{1,2}
ans =
20
>> a(1,2)
ans =
[20]
注意:大括号用于表示元胞的内容,小括号表示指定的元胞。
要访问指定元胞中的具体元素,可以在元胞数组内容下标的后面加上指定数组元胞的下标。如:a{1,2}(1,2)表示元胞a{1,2}的元素(1,2)。
>> a={20,'matlab';ones(2,3),1:10}
a =
[ 20] 'matlab'
[2x3 double] [1x10 double]
>> a{1,2}(2) %'matlab'的第2个元素
ans =
a
>> a{2,2}(2)
ans =
2