如何将空数组附加到元胞数组

How to append an empty array to a cell array

如何将空数组附加到(非空)元胞数组?

例如,从

开始
c={[1],[2]}

渴望

c={[1],[2],[]}

连接将删除空数组,无论它是双精度、字符还是单元格。

您可以使用 end+1:

附加它
c={[1],[2]}
c = 
    [1]    [2]
c{end+1} = []  % end+1 "appends"
c = 
    [1]    [2]    []

MATLAB 注意:追加通常用作在循环内增加数组大小的一种方式,在 MATLAB 中不推荐这样做。相反,尽可能使用 pre-allocation 来初始应用最终尺寸。

除了@Adriaan 的回答之外,请注意,如果您小心的话,可以 也可以通过串联来做到这一点。

>> c = {1, 2}
c =
  1x2 cell array
    {[1]}    {[2]}
>> [c, {[]}]
ans =
  1x3 cell array
    {[1]}    {[2]}    {0x0 double}

这里的技巧是明确地与另一个 cell 连接(你的问题表明你尝试了 [c, []] 确实什么都不做,而 [c, 1] 自动转换原始 1 变成 {1} 才可以操作).

(此外,虽然 pre-allocation 在可能的情况下绝对是首选,但在最新版本的 MATLAB 中,动态增长数组的惩罚远没有以前那么严重)。