在元胞数组中添加或删除元胞
元胞数组遵循与其他类型的 MATLAB® 数组相同的扩展、串联和删除基本规则。但是,您可以通过两种方式对元胞数组进行索引:用花括号 {}
来访问元胞内容,或用圆括号 ()
来引用元胞本身。在元胞数组中添加、删除或合并元胞时,请记住此区别。
添加元胞
扩展元胞数组的一种常见方式是垂直或水平串联元胞数组。使用标准方括号串联运算符 []
。用分号分隔垂直串联的元素,或用逗号分隔水平串联的元素。
C1 = {'one',2}; C2 = {ones(3,3),'four'}; C = [C1; C2]
C=2×2 cell array
{'one' } {[ 2]}
{3x3 double} {'four'}
C_horz = [C1,C2]
C_horz=1×4 cell array
{'one'} {[2]} {3x3 double} {'four'}
串联元胞数组和非元胞数组会将非元胞数组放入单个元胞中。因此,元胞数组必须为向量。
A = [1 2 3; 4 5 6]; C3 = [C1,A]
C3=1×3 cell array
{'one'} {[2]} {2x3 double}
要从非元胞数组中创建单独的元胞,可以使用 num2cell
。
C4 = [C,num2cell(A)]
C4=2×5 cell array
{'one' } {[ 2]} {[1]} {[2]} {[3]}
{3x3 double} {'four'} {[4]} {[5]} {[6]}
元胞数组也支持标量扩展。也就是说,如果将值赋给现有数组之外的元胞,数组会扩展以包含这些值。扩展后的数组是矩形的,任何中间元胞都包含空的数值数组。为元胞赋值时,请使用花括号。
C{3,3} = 9
C=3×3 cell array
{'one' } {[ 2]} {0x0 double}
{3x3 double} {'four' } {0x0 double}
{0x0 double} {0x0 double} {[ 9]}
C{end,end+1} = []
C=3×4 cell array
{'one' } {[ 2]} {0x0 double} {0x0 double}
{3x3 double} {'four' } {0x0 double} {0x0 double}
{0x0 double} {0x0 double} {[ 9]} {0x0 double}
要替换元胞的内容,请使用花括号定义元胞数组,然后使用圆括号将其赋给一组大小相等的元胞。
C(3,:) = {'replacement', rand(2,2), 42, 'row'}
C=3×4 cell array
{'one' } {[ 2]} {0x0 double} {0x0 double}
{3x3 double } {'four' } {0x0 double} {0x0 double}
{'replacement'} {2x2 double} {[ 42]} {'row' }
删除元胞
删除元胞数组的行或列的语法与其他 MATLAB 数组一致。将元胞设置为等于一对空方括号。例如,删除 C
的第二行。
C(2,:) = []
C=2×4 cell array
{'one' } {[ 2]} {0x0 double} {0x0 double}
{'replacement'} {2x2 double} {[ 42]} {'row' }
用花括号将索引括起来会将元胞的内容替换为一个空数组。
C{1,1} = []
C=2×4 cell array
{0x0 double } {[ 2]} {0x0 double} {0x0 double}
{'replacement'} {2x2 double} {[ 42]} {'row' }
合并元胞
元胞可以包含任何类型或大小的数据,因此合并元胞或同时从多个元胞中提取数据要求数据兼容。有关详细信息和示例,请参阅访问元胞数组中的数据。