如何将空数组附加到元胞数组
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 中,动态增长数组的惩罚远没有以前那么严重)。
如何将空数组附加到(非空)元胞数组?
例如,从
开始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 中,动态增长数组的惩罚远没有以前那么严重)。