如所示,详见元胞数组的基本用法元素可以使用{和}’运算符。如果要提取或访问作为静态元胞数组的子数组,则需要使用(和)’运算符。以下示例说明了差异:
c = {"1", "2", "3"; "x", "y", "z"; "4", "5", "6"};
c{2,3}
⇒ ans = z
c(2,3)
⇒ ans =
{
[1,1] = z
}
所以与{}您访问cellarray的元素,而使用()您访问一个cellarray的子数组。
使用(和)’运算符,索引适用于cellarrays,就像适用于多维数组一样。例如,元胞数组的第一列和第三列的所有行都可以设置为0使用以下命令:
c(:, [1, 3]) = {0}
⇒ =
{
[1,1] = 0
[2,1] = 0
[3,1] = 0
[1,2] = 2
[2,2] = y
[3,2] = 5
[1,3] = 0
[2,3] = 0
[3,3] = 0
}
注意,上述内容也可以这样实现:
c(:, [1, 3]) = 0;
这里,标量0自动升级到小区数组{0},然后赋值给的子数组c.
给出另一个使用'索引元胞数组的示例(),您可以按照以下命令交换元胞数组的第一行和第二行:
c = {1, 2, 3; 4, 5, 6};
c([1, 2], :) = c([2, 1], :)
⇒ =
{
[1,1] = 4
[2,1] = 1
[1,2] = 5
[2,2] = 2
[1,3] = 6
[2,3] = 3
}
使用“”访问元胞数组的多个元素{和}运算符将生成一个以逗号分隔的所有指定元素列表(详见逗号分隔列表). 使用{和}运算符—上例中的前两行可以像这样交换return:
[c{[1,2], :}] = deal (c{[2, 1], :})
⇒ =
{
[1,1] = 1
[2,1] = 4
[1,2] = 2
[2,2] = 5
[1,3] = 3
[2,3] = 6
}
对于结构体数组和数字数组,空矩阵[]可用于从元胞数组中删除元素:
x = {"1", "2"; "3", "4"};
x(1, :) = []
⇒ x =
{
[1,1] = 3
[1,2] = 4
}
以下示例显示了如何仅删除cellarray元素的内容,而不删除它们的空间:
x = {"1", "2"; "3", "4"};
x(1, :) = {[]}
⇒ x =
{
[1,1] = [](0x0)
[2,1] = 3
[1,2] = [](0x0)
[2,2] = 4
}
索引操作在元胞数组上进行,而不是在元胞数组中的对象开关上进行。相比之下cellindexmat将matrixindexing应用于每个元胞数组项中的对象,并返回指定的值。
y = cellindexmat (x, varargin) ¶对元胞数组中的矩阵执行索引。
给定矩阵的元胞数组x,此函数计算
Y = cell (size (X));
for i = 1:numel (X)
Y{i} = X{i}(varargin{1}, varargin{2}, ..., varargin{N});
endfor
索引参数可能是标量(2),数组([1, 3]),范围(1:3),或冒号运算符(":"). 但是,索引关键字end不可用。
详见: cellslices, cellfun.
版权所有 © 2024-2025 Octave中文网
ICP备案/许可证号:黑ICP备2024030411号-2