【问题标题】:Indexing a cell array with variable number of dimensions with a vector使用向量索引具有可变维数的元胞数组
【发布时间】:2016-01-11 09:24:42
【问题描述】:

在 MATLAB 中,有一个 N 维单元格C,其中 N 是一个仅在运行时确定的整数。如何使用向量变量id 访问C 的特定元素?比如N=3id=[1,5,2],如何以编程方式获取c{1,5,2}的内容?我无法将其硬编码为 c{id(1),id(2),id(3)},因为 N 仅在运行时固定。

【问题讨论】:

  • c{id} 不起作用吗?
  • @thewaywewalk no, c{id} 返回 c{id(1)}, c{id(2)},..., c{(id(N))}
  • 好吧,C{[id(1),id(2),id(3)]}C{id} 是等价的。
  • @thewaywewalk ...但与c{id(1),id(2),id(3)}非常不同
  • @Dan ... 对于我想象的输入根本不起作用,这同样代表您的答案。对我来说,这个问题完全不清楚。但是您的心理技能似乎足够好,并且OP很满意。那为什么不...

标签: arrays matlab indexing


【解决方案1】:

如果id 是一个元胞数组,那么您可以通过利用comma separated list syntax 来使用sub2ind,即{:},将可变数量的输入发送到sub2ind

id = {1,5,2};
ind = sub2ind(size(C), id{:})
c{ind}

如果id 不是元胞数组(并且由于某种原因无法创建为一个元胞数组),则使用num2cell 对其进行转换。

【讨论】:

    猜你喜欢
    • 2017-04-14
    • 1970-01-01
    • 1970-01-01
    • 2015-06-22
    • 2018-07-05
    • 2016-06-18
    • 2011-07-17
    • 2020-11-28
    • 1970-01-01
    相关资源
    最近更新 更多