【问题标题】:Difference between accessing cell elements using curly braces and parentheses使用花括号和圆括号访问单元格元素的区别
【发布时间】:2012-01-29 17:12:19
【问题描述】:

使用括号 () 和花括号 {} 访问元胞数组中的元素有什么区别?

例如,我尝试使用cell{4} = []cell(4) = []。在第一种情况下,它将第 4th 元素设置为[],但在第二种情况下,它清除了单元格元素,也就是说,将单元格元素数减少了 1。

【问题讨论】:

标签: matlab cell-array


【解决方案1】:

将元胞数组想象成一个规则的同质数组,其元素都是cells。圆括号 (()) 只访问 cell 包装对象,而使用花括号 ({}) 访问元素则给出单元格中包含的实际对象。

例如,

A={ [5,6], 0 , 0 ,0 };

看起来像这样:

使元素等于[] 带括号的语法实际上是删除该元素的请求,因此当您要求执行foo(i) = []时,您删除了i em>-th 单元格。它不是赋值操作,而是RemoveElement 操作,使用与赋值类似的语法。

但是,当您执行foo{i} = [] 时,您正在为第 i 个单元格分配一个新值(这是一个空数组),从而清除该单元格的内容。

【讨论】:

  • 您可以将单元格视为一个列表,其中存储指向其他事物的指针。使用 () 获取指针,使用 {} 获取指针指向的内容。
  • 另一种看待它的方式是分配给[] 会删除您分配给的任何内容。所以foo(i) = []确实删除了第i个单元格,foo{i} = []删除了第i个单元格的内容。 (什么都不留下([]))
  • 看看这个关于元胞数组的 Octave 文档(MATLAB 兼容;))gnu.org/software/octave/doc/v4.0.1/…
【解决方案2】:

请参阅this link 中的帮助。如您所见,使用圆括号 () 访问会为您提供单元格的子集(即子单元格),而花括号 {} 则为您提供您尝试访问的单元格的内容。

【讨论】:

猜你喜欢
  • 2011-01-12
  • 2019-09-05
  • 2013-07-26
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多