matlab:访问嵌套单元格数组中的多个元素

时间:2015-10-12 23:15:41

标签: matlab

如何访问向量或矩阵的单元格数组中的多个元素?例如,假设有一个具有以下单元格数组:

c={[1 2 3] [4 5 6 7]};

可以按如下方式访问元素2,6和7:

[c{1}(2) c{2}(3) c{2}(4)]

假设有两个向量具有所需元素的索引,第一个向量包含单元格索引,第二个向量包含所需元素的向量索引。

例如,要访问上述三个元素,可能需要以某种方式使用“单元索引向量”ci=[1 2 2]和“向量索引向量”vi=[2 3 4],类似于以下内容: / p>

c{ci}(vi)

如何在不诉诸循环的情况下执行这样的嵌套访问?

1 个答案:

答案 0 :(得分:1)

我不认为你想做什么,这就是为什么我这么想:考虑数组。您可以拥有一个c=rand(3)数组3x3。您可以c(1:2,3)访问它以选择子数组,但无法访问(1,1)(2,2)(3,3)元素同时使用数组索引。您可以使用数组的线性索引,如c(sub2ind([3,3],[1 2 3],[1 2 3]))中所示。但是对于单元格而言,这两种指数明显不同,并且您不能使用线性类型的索引来混合单元格和数组索引。

这是一个更好的论点。细胞非常慢,所以它们的强侧必须是其他东西。这就是他们的多功能性:你可以将任何放入一个单元格中。包括函数句柄:

c={1, [2 3], @sin};

但是如果你尝试索引会发生一些有趣的事情:

>> c{2}(2)

ans =

     3

>> c{3}(2)

ans =

    0.9093

这可能是不确定的,但对我来说,这非常强烈地表明你无法在平等的基础上普遍地对待细胞指数;任何索引都必须特定于您单元格的给定元素(取决于它是标量,数组,函数句柄还是长颈鹿)。