Main Content

在元胞数组中添加或删除元胞

元胞数组遵循与其他类型的 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'     }

合并元胞

元胞可以包含任何类型或大小的数据,因此合并元胞或同时从多个元胞中提取数据要求数据兼容。有关详细信息和示例,请参阅访问元胞数组中的数据

相关主题