MATLAB中的单元数组

4

我知道什么是cell array。我只是遇到了以下代码行:

cell_array = cell([], 1);

什么意思?我们如何阅读上面的那一行?
谢谢。

2
这与 cell_array = cell(0, 1) 相同,即创建一个0x1空单元矩阵,但我不知道这样做的原因。例如,如果您只是为循环初始化,可以像这样创建0x0单元数组 cell_array = {} - Dan
1
@Dan。当您说 0x1 时,这是字面意思是 0 行和 1 列吗?我们怎么可能有 0 行呢?谢谢。 - Simplicity
1
是的,完全正确。我不知道你为什么需要这个。0x0,即空,很有用。对我来说,0x1几乎也是一样的空:/ - Dan
一个空的cell数组可以让你将后续的代码连接到它上面。否则,变量不存在,就会产生错误。 - radarhead
1
我可以想到一个。假设后续的串联需要检查列数以确保它们在合并之前匹配。这是一种预设列数的方法。 - radarhead
显示剩余2条评论
2个回答

2

这将创建一个0x1的空单元格数组。实际上是0行1列。你可以像这样创建一个0x0的单元格数组:

cell_array = {}

这对我来说很有意义。有时候,如果你无法在循环之前预分配,那么在循环中进行连接或使用cell_array(end) = ...是有用的。

我真的不知道为什么你会更喜欢0x1,但这个问题展示了它与0x0的不同之处。所以我的意思是,如果由于某种奇怪的原因,你在这个空数组上运行for循环,你知道它至少会运行一次: / 但这真的是在寻找理由。我认为只需使用= {}

编辑:

正如@radarhead指出的那样,这是一种预设列数的方法,如果您计划在循环中连接新行,则可以使用该方法。


0

cell 用于分配一个单元数组,此处为 cell_array

因此,分配了一个大小为 0x1 的空单元格。 然而,这对于单元格来说是没有用的语法。对于其他(自定义)对象,生成这样的空数组可能是有用的。

myArray = myObject.empty(0, 1);

你也可以使用 empty 函数来创建空的单元数组:cell_array = cell.empty(0,1) - Sam Roberts
但为什么是(0,1)而不是(0,0)呢? - Dan

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接