如何访问向量或矩阵的单元格数组中的多个元素?例如,假设有一个具有以下单元格数组:
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)
如何在不诉诸循环的情况下执行这样的嵌套访问?
答案 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
这可能是不确定的,但对我来说,这非常强烈地表明你无法在平等的基础上普遍地对待细胞指数;任何索引都必须特定于您单元格的给定元素(取决于它是标量,数组,函数句柄还是长颈鹿)。