Matlab中访问部分元胞的多级索引

此示例说明了访问存储于元胞数组的元胞中的数组数据的方法。

创建一个样本元胞数组。

myNum = [1, 2, 3];
myCell = {'one', 'two'};
myStruct.Field1 = ones(3);
myStruct.Field2 = 5*ones(5);

C = {myNum, 100*myNum;
     myCell, myStruct}



C=2×2 cell
    {1x3 double}    {1x3 double}
    {1x2 cell  }    {1x1 struct}

使用花括号{}访问特定元胞的完整内容。例如,从包含某个数值向量的元胞返回该向量。

C{1,2}


ans = 1×3

   100   200   300

通过追加索引,并使用与内容的数据类型匹配的语法,来访问元胞的部分内容。

使用圆括号将数值索引括起来。例如,C{1,1} 返回一个 1×3 数值向量 [1 2 3]。使用圆括号访问该向量的第二个元素。

C{1,1}(1,2)


ans = 2

将元胞数组索引括在花括号中。例如,C{2,1} 返回元胞数组 {'one','two'}。使用花括号访问该元胞数组中的第二个元胞的内容。

C{2,1}{1,2}


ans = 
'two'

使用圆点表示法引用结构体数组的字段,并按对数值和元胞数组的说明为数组建立索引。例如,C{2,2} 返回一个结构体数组,其中 Field2 包含一个由 5 构成的 5×5 数值数组。使用圆点表示法和圆括号访问该字段的第 5 行和第 1 列中的元素。

C{2,2}.Field2(5,1)


ans = 5

您可以嵌套任何数量的元胞和结构体数组。例如,将嵌套的元胞和结构体添加到 C

C{2,1}{2,2} = {pi, eps};


C{2,2}.Field3 = struct('NestedField1', rand(3), ...
                       'NestedField2', magic(4), ...
                       'NestedField3', {
   
   {'text'; 'more text'}} );

使用花括号、圆括号或圆点表示法访问部分新数据。

copy_pi = C{2,1}{2,2}{1,1}

copy_pi = 3.1416
part_magic = C{2,2}.Field3.NestedField2(1:2,1:2)

part_magic = 2×2

    16     2
     5    11
nested_cell = C{2,2}.Field3.NestedField3{2,1}

nested_cell = 
'more text'

猜你喜欢

转载自blog.csdn.net/jk_101/article/details/106500297