如何使用单元格值作为索引

时间:2014-02-27 12:17:38

标签: matlab indexing cell

我有一个行数组X和一个单元格C = {[1 3 4] [2 6]}。我想使用C作为索引从x. The result should be {[x(1)x(3)x(4)] [x(2)x(6)]} {{1 x(C)`但它不起作用。我怎样才能做到这一点?

4 个答案:

答案 0 :(得分:1)

首先使用cell2mat http://www.mathworks.de/de/help/matlab/ref/cell2mat.html 你可能还需要重塑

>> C = {[1 3 4] [2 6]}
C =     
    [1x3 double]    [1x2 double]
>> A = cell2mat(C)
A =
     1     3     4     2     6

现在您可以使用x(C)或一行

Y=x(cell2mat(C))

答案 1 :(得分:1)

result = mat2cell(x([C{:}]), 1, cellfun(@numel, C));

答案 2 :(得分:0)

以下是执行此寻址的另一种单行方式:

Y = X([C{:}]);

修改

由于您需要与C相同的单元格结构,因此这是第二种解决方案:

Y = cellfun(@(a) X(a),C,'UniformOutput',false);

答案 3 :(得分:0)

Per Bentoy13 的建议就是这样做:

cell(cellfun(@(a) x(a)',C,'UniformOutput',false))