【发布时间】: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) ` 但它不起作用。我怎样才能做到这一点?
【问题讨论】:
我有一个行数组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) ` 但它不起作用。我怎样才能做到这一点?
【问题讨论】:
首先使用 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))
【讨论】:
result = mat2cell(x([C{:}]), 1, cellfun(@numel, C));
【讨论】:
这是执行此寻址的另一种单行方式:
Y = X([C{:}]);
编辑
由于您想要与 C 相同的单元结构,这里是第二种解决方案:
Y = cellfun(@(a) X(a),C,'UniformOutput',false);
【讨论】:
按照 Bentoy13 的建议这样做:
cell(cellfun(@(a) x(a)',C,'UniformOutput',false))
【讨论】: