6.3.3索引元胞数组

如所示,详见元胞数组的基本用法元素可以使用{}’运算符。如果要提取或访问作为静态元胞数组的子数组,则需要使用()’运算符。以下示例说明了差异:

c={“1”,“2”,“3”;“x”,“y”,“z”;“4”,“5”,“6”};c{2,3}⇒ ans=zc(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]=[](x0)[2,2]=4}

索引操作在元胞数组上进行,而不是在元胞数组中的对象开关上进行。相比之下切林德克斯曼将matrixindexing应用于每个元胞数组项中的对象,并返回指定的值。

 
: y = cellindexmat (x, varargin)

对元胞数组中的矩阵执行索引。

给定矩阵的元胞数组x,此函数计算

Y=数组(大小(X));对于i=1:numel(X)Y{i}=X{i}(变精{1},变精{2},…,变精{N});外循环

索引参数可能是标量(2),数组([1, 3]),范围(1:3),或冒号运算符(:). 但是,索引关键字终止不可用。

详见: 元胞切片, cellfun.


版权所有 © 2024 Octave中文网

ICP备案/许可证号:黑ICP备2024030411号