在 MATLAB 中串联元胞数组

Concatenate cell array in MATLAB

在 Matlab 中,您可以通过以下语句连接数组:

a=[];
a=[a,1];

如何用元胞数组做类似的事情?

a={};
a={a,'asd'};

上面的代码一直在单元格内嵌套单元格。我只想将元素附加到元胞数组。我该如何实现?

如果 ab 是元胞数组,那么您可以像连接其他数组一样连接它们:使用 []:

>> a={1,'f'}
a =
  1×2 cell array
    {[1]}    {'f'}

>> b={'q',5}
b =
  1×2 cell array
    {'q'}    {[5]}

>> [a,b]
ans =
  1×4 cell array
    {[1]}    {'f'}    {'q'}    {[5]}

您还可以使用函数形式 cat,在其中您可以 select 您想要连接的维度:

>> cat(3,a,b)
  1×2×2 cell array
ans(:,:,1) = 
    {[1]}    {'f'}

ans(:,:,2) = 
    {'q'}    {[5]}

要附加单个元素,您可以执行 a=[a,{1}],但这效率不高(请参阅 )。相反,做 a{end+1}=1a(end+1)={1}.


请记住,元胞数组只是一个数组,就像其他数组一样。您可以使用相同的工具来操作它们,包括使用 () 进行的索引。 () 索引 returns 与您索引的数组类型相同,因此它 returns 是一个元胞数组,即使您只索引一个元素也是如此。 MATLAB 中几乎每个值都是一个数组,包括 6,它是一个 1x1 双精度数组。

{} 语法用于创建元胞数组,并提取其内容:a{1} 不是元胞数组,它提取数组第一个元素的内容。

{5, 8, 3} 等同于 [{5}, {8}, {3}]5 是双精度数组,{5} 是包含双精度数组的元胞数组。

a{5} = 0 等同于 a(5) = {0}.