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
如果 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