【问题标题】:how to use cell value as index如何使用单元格值作为索引
【发布时间】:2024-01-14 07:34:02
【问题描述】:

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

【问题讨论】:

    标签: matlab indexing cell


    【解决方案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))
    

    【讨论】:

    • 但我希望结果也是一个与 C 具有相同结构的单元格
    【解决方案2】:
    result = mat2cell(x([C{:}]), 1, cellfun(@numel, C));
    

    【讨论】:

      【解决方案3】:

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

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

      编辑

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

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

      【讨论】:

      • 但这会将 Y 作为一个数组,而不是作为一个与 C 结构相同的单元格
      【解决方案4】:

      按照 Bentoy13 的建议这样做:

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

      【讨论】: