【问题标题】:Cell arrays in MATLABMATLAB 中的元胞数组
【发布时间】:2013-08-09 01:23:23
【问题描述】:

我知道cell array 是什么。我刚刚来到以下行:

cell_array = cell([], 1);

这是什么意思?我们如何阅读上面的行?

谢谢。

【问题讨论】:

  • 它与cell_array = cell(0, 1) 相同,即制作一个 0x1 空单元矩阵,但我不能说我知道这样做的任何原因。例如,如果您只是为循环初始化,您可以制作一个像这样 cell_array = {} 的 0x0 单元数组
  • @丹。当你说0x1。这是否意味着0 行和1 列?我们怎样才能拥有0 行?谢谢
  • 是的,完全正确。我不知道你为什么需要这个。 0x0,即空是有用的。 0x1 对我来说几乎是空的:/
  • 一个空单元格数组可以让您有后续代码连接到它。否则,变量不存在,产生错误。
  • 我能想到一个。假设随后的串联想要检查列数以确保它们在合并之前匹配。如果您愿意,这是一种预设列数的方法。

标签: arrays matlab cell


【解决方案1】:

所以这会产生一个 0x1 的空单元格数组。就像字面上的 0 行和 1 列一样。你可以像这样创建一个 0x0 单元格数组:

cell_array = {}

这对我来说很有意义。我有时会这样做,如果你不能在循环之前进行预分配,有时在循环中连接或转到cell_array(end) = ... 很有用。

我真的不知道您为什么更喜欢 0x1,但 this question 显示了它与 0x0 的不同之处。所以我的意思是,如果出于某种奇怪的原因你在这个空数组上运行一个 for 循环,你知道它至少会运行一次:/ 但这确实是有原因的。我想坚持= {}

编辑:

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

【讨论】:

    【解决方案2】:

    cell 用于分配元胞数组,在本例中为:cell_array

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

    myArray = myObject.empty(0, 1);
    

    【讨论】:

    • 您也可以将empty 用于元胞数组:cell_array = cell.empty(0,1)
    • 但为什么是(0,1) 而不是(0,0)
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2017-12-03
    • 2014-06-22
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多