MATLAB:当 A 是元胞数组时,A{:} 与 AN(:)

MATLAB: A{:} vs A(:) when A is a cell array

如果 A 是 MATLAB 中的元胞数组,我想了解 A{:}A(:) 之间的区别以及我应该在何处使用它们。

正如你在official documentation中所读到的,前者指的是索引数组中的一组单元格(实际上是所有单元格),后者指的是索引数组中的一组基础值(再次,所有这些)。

元胞数组只不过是同质数组,其元素都是元胞,元胞具有可以是任何类型的基础值。圆括号简单地访问单元格(底层值的包装对象),而花括号访问单元格本身包装的元素(底层值)。

让我们举一个简单的例子。圆括号将 return 元胞数组,因为使用了单个 colon operator (:) 并且矩阵被展平:

A = {1 2; 3 4};
A(:)

ans =

  4×1 cell array

    [1]
    [3]
    [2]
    [4]

相反,花括号将return每个单元格的基础值(双倍):

A = {1 2; 3 4};
A{:}

ans =

     1

ans =

     3

ans =

     2

ans =

     4

在第二种情况下,如果你想要一个数组被returned,你必须按如下方式编写选择器:

[A{:}]

ans =

     1     3     2     4