MATLAB:当A是一个单元格数组时,A {:}与A(:)

AFP*_*AFP 0 matlab cell-array

如果A是MATLAB中的单元格数组,我想学习和之间A{:}以及A(:)它们在哪里的区别。

Tom*_*zzo 5

正如您在官方文档中可以看到的那样,前者是指对数组中的一组单元格进行索引(实际上是全部),而后者是指对数组中的一组基础值进行索引(同样,它们全部)。

细胞阵列不过是均质阵列,其元素都是所有细胞,并且细胞具有可以是任何类型的潜在价值。圆括号仅访问单元格(基础值的包装对象),而花括号访问单元格自身包装的元素(基础值)。

让我们举一个简单的例子。圆括号将返回单元格数组,因为使用了单个冒号运算符:)并且矩阵被展平:

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

ans =

  4×1 cell array

    [1]
    [3]
    [2]
    [4]
Run Code Online (Sandbox Code Playgroud)

相反,大括号将返回每个单元格的基础值(双精度):

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

ans =

     1

ans =

     3

ans =

     2

ans =

     4
Run Code Online (Sandbox Code Playgroud)

在第二种情况下,如果要返回数组,则必须编写选择器,如下所示:

[A{:}]

ans =

     1     3     2     4
Run Code Online (Sandbox Code Playgroud)